本文目錄一覽:
求C語言練習題答案
二、填空題
1. ___變數__是指在程序運行過程中,值可以發生變化的量。
2.C語言是一種____區分_(區分/不區分)字母大小寫的語言,Password和password在C語言中是兩個___不同__(相同/不同)的標識符。
3.下面的轉義字元分別表示:
』\b』__退格___,』\n』__換行___,』\t』__水平製表___,』\地』 __雙引號字元逗”地___
4.下面常量的類型分別為:
1.5E12__浮點型___,1288L _整型____,』a』__字元___,”a”__字元串___
08 __整形___,』\007』__整型___
5. C語言源程序一定要有而且只有一個__主函數___函數,程序執行時也從它開始。
6. 結構化程序設計主要有___順序__、__選擇___和__循環___三種基本結構。
三、判斷題
1. C語言不是一種結構化程序設計語言。(錯)
2. C語言是弱類型語言,為了類型轉換的方便,對類型的要求很不嚴格,在許多情況下不做類型檢查。( 對 )
3. C語言既具有高級語言的特點,同時也具有部分低級語言的特點。(對)
4. C源程序可以由多個文件組成,每個文件中都可有一個主函數main()。( 錯 )
5. C程序從main()函數開始執行,因此主函數main()必須放在程序的開頭。(錯)
6. 命名標識符時字元個數不得超過6個。(錯)
7. 對於同一個數據種類型,變數值越大,它所佔內存的位元組數越多。(錯)
8. 定義一個變數時必須指出變數類型,但是不一定必須給變數初始化。( 對 )
9. “”表示一個空字元串常量,』』表示一個空字元常量。( 對 )
10. 一個表達式中出現多種數值型數據類型,運算前先進行類型轉換。( 對 )
11. 浮點數不能作自增或自減運算,只有整型才可作自增或自減運算。( 錯 )
12. 已知a、b是整型變數,則表達式a=3,2+4,b=6,7+8是一個逗號表達式。( 對 )
四、問答題
1. 寫出下面表達式的值
(1)12/3*9=36
(2)int i=3,j;
i*=2+5;
i/=j=4;
i+=(j%2);
i、j的最終結果是多少看i=5,j=4
(3)int a=3,b,c;
b=(a++)+(a++)+(a++);
c=(++a)+(++a)+(++a);a、b、c的最終結果是多少看a=9,b=9,c=25
2. 下列表達式是否正確?若正確,表達式的值是什麼?
21/2=10 21/2.0= 10.5 21.0/2=10.5 21%2=1 21.0%2 21%2.0 18%15=3 15%18=15 3%15=3
五、編程題
編寫程序,在屏幕上輸出如下信息:
===================
= I am a student. =
===================
#include”stdio.h逗
void main()
{
printf(“= I am a student. =”);
}
c語言答案
C語言程序設計複習:
1、理解以下術語的含義:數組、函數、地址 指針 指針變數 直接訪問 間接訪問、結構體
2、用起泡法對10個數由小到大排序(P134例題)
5、輸入10個學生的成績,分別用函數實現下列功能:
1)計算所有學生的平均分;
2) 計算學生成績中最高分;
3) 計算學生成績中最低分;
4) 統計及格學生人數;
5) 查找成績為指定成績(如90)記錄,如果沒有,請給出提示,如果有,請統計滿足條件的記錄數。
6、有一個已經排好序的數組,今輸入一個數,要求按原來排序的規律將它插入數組中。(P153習題7.4)
7、編寫一個函數,輸入一個4位數字,要求輸出這4個數字字元,但每兩個數字字元間空一個空格。如輸入1990,應輸出「1 9 9 0」。(要求用函數)(P202習題8.8)
8、編寫一個函數,求一個字元串的長度。在main函數中輸入字元串,並輸出其長度。(要求用指針,不能使用strlen()函數) (P279習題10.6)
9、編寫一個程序,打入月份號,輸出該月的英文月名。例如,輸入「3」則輸出「March」(要求用指針數組)。(P279習題10.18)
10、將一個數組中的值按逆序重新存放。例如,輸入的數組順序為8,6,5,4,1,要求改為1,4,5,6,8。(P153習題7.5)
11、編寫一個函數用「起泡法」對輸入的10個字元按由小到大順序排序(要用函數)。(P202習題8.11)
12、將數組a中n個整數按相反順序存放(要用函數)。(P237例題10.7)
13、輸入一行文字,找出其中大寫字母、小寫字母、空格、數字及其他字元各有多少。(要求用指針實現)(P279習題10.8)
14、編寫一個函數,將兩個字元串連接(要用自定義函數,不能用strcat函數)。(P202習題8.6)
15、輸入3個字元串,按照由小到大的順序輸出。(要求用指針) (P278習題10.2)
16、輸入10整數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換。寫三個函數:1、輸入10個數; 2、進行處理; 3、輸出10個數(數據對換要求用指針實現)(P278習題10.3)
參考答案:
2、用起泡法對10個數由小到大排序
#include stdio.h
void main()
{ int a[10]; int i,j,t;
printf(“input 10 numbers :\n”);
for (i=0;i10;i++)
scanf(“%d「,a[i]);
printf(「\n”);
for(j=0;j9;j++)
for(i=0;i10-j;i++)
if (a[i]a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf(“the sorted numbers :\n”);
for(i=0;i10;i++)
printf(「%d 「,a[i]);
}
3、用遞歸方法求n階勒讓德多項式的值,遞歸公式為(要求用函數):(P202習題8.13)
pn(x)= 1 n=0
x n=1
((2n-1)*x-pn-1(x)-(n-1)*pn-2(x)/n n1
3、#include stdio.h
void main()
{
int x,n;
float p(int,int);
printf(「input n x:」);
scanf(「%d,%d」,n,x);
printf(「n=%d,x=%d\n」,n,x);
printf(「P%d(%d)=%6.2f\n」,n,x,p(n,x));
}
float p(int n,int x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/n;
}
4、輸入3個整數,按由小到大的順序輸出(要求用指針類型)(P228例題)
4、輸入3個整數,按由小到大的順序輸出(要求用指針類型)
#include stdio.h
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf(“%d%d%d”,a,b,c);
sort(a,b,c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}
}
5、輸入10個學生的成績,分別用函數實現下列功能:
1)計算所有學生的平均分;
6) 計算學生成績中最高分;
7) 計算學生成績中最低分;
8) 統計及格學生人數;
9) 查找成績為指定成績(如90)記錄,如果沒有,請給出提示,如果有,請統計滿足條件的記錄數。
#include stdio.h
void main()
{
int average(int a[]);
int max(int a[]);
int min(int a[]);
int pass(int a[]);
int search(int a[],int g);
int i,j,g;
int score[10],aver,m1,m2,p,s;
printf(“Please input 10 scores:\n”);
for(i=0;i10;i++)
scanf(“%d”,score[i]);
printf(“\n”);
aver=average(score);
m1=max(score);
m2=min(score);
p=pass(score);
printf(“平均分為: %d\n”,aver);
printf(“最高分為: %d\n”,m1);
printf(“最低分為: %d\n”,m2);
printf(“及格人數為: %d\n”,p);
printf(“需要查找嗎?\n”);
printf(“輸入1繼續查找,輸入0退出(1/0):”);
scanf(“%d”,j);
if(j==1)
{
printf(“請輸入要查找的分數: \n”);
scanf(“%d”,g);
s=search(score,g);
if(s==0)
printf(“沒有滿足條件的記錄”);
else
printf(“成績為%d的學生共有%d名\n”,g,s);
}
}
int average(int a[])
{
int i;
int aver,sum=a[0];
for(i=1;i10;i++)
sum=sum+a[i];
aver=sum/10;
return aver;
}
int max(int a[])
{
int i;
int m=a[0];
for(i=1;i10;i++)
if(ma[i])
m=a[i];
return m;
}
int min(int a[])
{
int i;
int m=a[0];
for(i=1;i10;i++)
if(ma[i])
m=a[i];
return m;
}
int pass(int a[])
{
int i;
int s=0;
for(i=0;i10;i++)
if(a[i]=60)
s++;
return s;
}
int search(int a[],int g)
{
int i;
int s=0;
for(i=0;i10;i++)
if(a[i]==g)
s++;
return s;
}
6、已有一個已排好次序的數組,要求輸入一個數後,按原先排序的規律將它插入數組中。
Void main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf(“初始數組如下:”);
for (i=0;i10;i++)
printf(“%5d”,a[i]);
printf(“\n”);
printf(“輸入插入數據:”);
scanf(“%d”,number);
end=a[9];
if(numberend)
a[10]=number;
else
{for(i=0;i10;i++)
{ if(a[i]number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j1;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i11;i++)
printf(“a%6d”,a[i]);
}
7、編寫一個函數,輸入一個4位數字,要求輸出這4個數字字元,但每兩個數字字元間空一個空格。如輸入1990,應輸出「1 9 9 0」。
#include iostream
void main()
{
void stradd(char str[]);
char str[80];
printf(“輸入一串數字\n\n”);
gets(str);
stradd(str);
printf(“\n\n加空格後的字元串\n\n”);
puts(str);
}
void stradd(char str[])
{
char a[80];
int i=0,j;
for(j=0;str[j]!=’\0′;j++)
{
a[i]=str[j];
a[i+1]=’ ‘;
i+=2;
}
a[i]=’\0′;
for(i=0;a[i]!=’\0′;i++)
{
str[i]=a[i];
}
str[i]=’\0′;
}
8、編寫一個函數,求一個字元串的長度。在main函數中輸入字元串,並輸出其長度。(要求用指針實現)
#include “stdio.h”
int stringlength( char *str )
{int n;
n=0;
While(*str!=0)
{n++;
str++;
}
Return(n);
}
int main()
{
char str〔100〕,
int len,
printf(“Please input a string: “),
scanf(“%s”.str),
len = stringlength( str ),
printf(“The string』s length is %d.”.len),
return 0;
}
9、編寫一個程序,打入月份號,輸出該月的英文月名 n。例如,輸入「3」則輸出「March」,要求用指針數組處理。
#include stdio.h
main()
{ char *month_name[13]={“illegal month”,”January”,”February”,”March”,”April”,
“May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”};
int n;
printf(“Input month: “);
scanf(“%d”,n);
if((n=12)(n=1))
printf(“It is %s.\n”,*(month_name+n));
else
printf(“It is wrong.\n”);
}
10、將一個數組中的值按逆序重新存放。例如,輸入的數組順序為8,6,5,4,1,要求改為1,4,5,6,8。
#include stdio.h
#define N 5;
void main()
{
int a[N],i,temp;
printf(「enter array a:\n」);
for(i=0;iN;i++)
scanf(「%d」,a[i]);
printf(「array a:\n」);
for(i=0;iN;i++)
{temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}
printf(「\nNow, array a:\n」);
for(i=0;iN;i++)
printf(「%4d」,a[i]);
printf(「\n」);
}
11、編寫一個函數用「起泡法」對輸入的10個字元按由小到大順序排序(要用函數)。
#include stdio.h
void main()
{ char str[80];
void sort(char str[]);
printf(“輸入一個字元串\n\n”);
gets(str);
sort(str);
printf(“\n\n字元由小到大排序為:\n\n”);
puts(str);
}
void sort(char str[])
{ int i,j;
char temp;
for(i=0;istrlen(str);i++)
{
for(j=0;jstrlen(str)-i-1;j++)
{
if(str[j]str[j+1])
{
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
}
12、將數組a中n個整數按相反順序存放(要用函數)。
#include stdio.h
void inv(int x[ ],int n)/*形參x是數組名*/
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;}
return;
}
void main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf(「轉換前的數組為:\n”);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
printf(“\n”);
inv(a,10);
printf(「轉換後的數組為:\n”);
for(i=0;i<10;i++)
printf(“%d,”,a[i]);
printf(“\n”);
}
13、輸入一行文字,找出期中大寫字母、小寫字母、空格、數字及其他字元各有多少?(要求用指針實現)
#includestdio.h
#includestring.h
int main()
{
char str[40];//創建字元串數組
int count[5]={0,0,0,0};//創建計數器數組並初始化
printf(“Please input a string .\n”);
scanf(“%s”,str);
char *p=str;//指針p指向字元串數組str
int n=strlen(str);//確定輸入字元串的長度
for(int i=0;in;i++)
{
if(*(p+i)=’A’*(p+i)=’Z’)
{
count[0]++;//統計大寫字母數目
}
else if(*(p+i)=’a’*(p+i)=’z’)
{
count[1]++;//統計小寫字母數目
}
else if(*(p+i)=’0’*(p+i)=’9′)
{
count[2]++;//統計數字數目
}
else if(*(p+i)==”)
{
count[3]++;//統計空格數目
}
else
{
count[4]++;//統計其他字元數目
}
}
printf(“大寫字母 小寫字母 數字 空格 其他字元:\n”);
for(i=0;i5;i++)
{
printf(“%d\t “,count[i]);//列印各統計數目
}
printf(“\n\n”);
return 0;
}
14、編寫一個函數,將兩個字元串連接。
#include stdio.h
#includestring.h
void concatenate(char string1[],char string2[],char string[])
{
int i,j;
for(i=0;string1[i]!=』\0』;i++)
string[i]=string1[i];
for(j=0;string2[j]!=』\0』;j++)
string[i+j]=string2[j];
string[i+j]=』\0』;
}
void main()
{
char s1[100],s2[100],s[100];
printf(「input string1:」);
scanf(「%s」,s1);
printf(「input string2:」);
scanf(「%s」,s2);
concatenate(s1,s2,s)
printf(「the new string is %s」,s);
}
15、輸入3個字元串,按照由小到大的順序輸出。 (要求用指針實現)
#include stdio.h
void main()
{
void sort (int*a, int*b,int*c);
int a,b,c;
scanf(“%d%d%d”,a,b,c);
sort(a,b,c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
void sort (int *a, int *b,int *c)
{
int tmp;
if (*a*b)
{
tmp=*a;
*a=*b;
*b=tmp;
}
if (*a*c)
{
tmp=*a;
*a=*c;
*c=tmp;
}
if (*b*c)
{
tmp=*b;
*b=*c;
*c=tmp;
}
}
16、輸入10整數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換。寫三個函數:1、輸入10個數; 2、進行處理; 3、輸出10個數(數據對換要求用指針實現)
#include stdio.h
void input(int number[])
{
Int I;
Printf(「input 10 numbers:」);
For(i=0;i10;i++)
Scanf(「%d」,number[i]);
}
void max_min_value(int number[])
{
int *max,*min,*p,temp;
max=min=number;
For(p=number+1;pnumber+10;p++)
if(*p*max)
max=p;
else if(*p*min)
min=p;
temp=number[0];number[0]=*min;*min=temp;
if(max=number) max=min;
temp=number[9];number[9]=*max;*max=temp;
}
void output(int number[])
{
int *p;
printf(「Now, they are: 「);
for(p=number;pnumber+10;p++)
Printf(「%d」,*p);
printf(「\n」);
}
void main()
{
int number[10];
input(number);
max_min_value(number);
output(number);
}
求C語言正確答案
題目中有異議的就第四題和第12題
第四題中答案應該是C 而第十二題應該選A
c語言編程題及答案
【4.1】已知銀行整存整取存款不同期限的月息利率分別為:
0.315% 期限一年
0.330% 期限二年
月息利率 = 0.345% 期限三年
0.375% 期限五年
0.420% 期限八年
要求輸入存錢的本金和期限,求到期時能從銀行得到的利息與本金的合計。
【4.2】輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下C語言表達式:year%4==0 year0!=0 || year@0==0。若表達式成立(即表達式值為1),則year為閏年;否則,表達式不成立(即值為0),year為平年。
【4.3】編寫一個簡單計算器程序,輸入格式為:data1 op data2。其中data1和data2是參加運算的兩個數,op為運算符,它的取值只能是+、-、*、/。
【4.4】輸入n值,輸出如圖所示矩形。
【4.5】輸入n值,輸出如圖所示平行四邊形。
【4.6】輸入n值,輸出如圖所示高為n的等腰三角形。
【4.7】輸入n值,輸出如圖所示高為n的等腰三角形。
【4.8】輸入n值,輸出如圖所示高和上底均為n的等腰梯形。
【4.9】輸入n值,輸出如圖所示高和上底均為n的等腰空心梯形。
【4.10】輸入n值,輸出如圖所示邊長為n的空心正六邊型。
C語言選擇題,知道的請告訴我答案
D不可以用FILE定義指向二進位文件的文件指針。答案:D解析:概念的理解,參考課本。FILE可以指向二進位和文本文件。
求C語言習題解答
1、
#include stdio.h#define STU 30#define COURSE 3void Input(long num[ ],int score[ ][COURSE],int n);void GetSumAver(int score[ ][COURSE],int n,int sum[ ],float aver[ ]);void Sort(long num[ ],int score[ ][COURSE],int n,int sum[ ],float aver[ ]);void Print(long num[ ],int score[ ][COURSE],int n,int sum[ ],float aver[ ]);int Search(long num[ ], int n, long x);main(){int n, score[STU][COURSE], sum[STU], pos;long num[STU], x;float aver[STU];printf(“Please enter the total number of the students(n=30):”);scanf(“%d”, n); /*輸入參加考試的學生人數*/printf(“Enter No. and score as: MT EN PH\n”);Input(num, score, n); /*輸入學生成績*/GetSumAver(score, n, sum, aver); /*計算總分和平均分*/printf(“Before sort:\n”);Print(num, score, n, sum, aver);Sort(num, score, n, sum, aver); /*排名次*/printf(“After sort:\n”);Print(num, score, n, sum, aver);printf(“Please enter searching number:”);scanf(“%ld”, x); /*以長整型格式輸入待查找學生的學號*/pos = Search(num, n, x); /*名次查詢*/if (pos != -1){printf(“position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n”);printf(“%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n”, pos+1,num[pos], score[pos][0],score[pos][1], score[pos][2], sum[pos],aver[pos]);}else{printf(“Not found!\n”);}}/* 函數功能:輸入某班學生學號及期末考試三門課程成績 函數參數:長整型數組num,存放學生學號 整型數組score,存放學生成績 整型變數n,存放學生人數 函數返回值:無*/void Input(long num[ ], int score[ ][COURSE], int n){int i, j;for (i=0; in; i++){scanf(“%ld”, num[i]);for (j=0; jCOURSE; j++){scanf(“%d”, score[i][j]);}}}/* 函數功能:計算每個學生的總分和平均分 函數參數:整型數組score,存放學生成績 整型變數n,存放學生人數 整型數組sum,計算得到的每個學生的總分 實型數組aver,計算得到的每個學生的平均分 函數返回值:無*/void GetSumAver(int score[ ][COURSE], int n, int sum[ ], float aver[ ]){int i, j;for (i=0; in; i++){sum[i] = 0;for (j=0; jCOURSE; j++){sum[i] = sum[i] + score[i][j];}aver[i] = (float)sum[i] / COURSE;}}/* 函數功能:按總分成績由高到低排出成績的名次 函數參數:長整型數組num,存放學生學號 整型數組score,存放學生成績 整型變數n,存放學生人數 整型數組sum,存放每個學生的總分實型數組aver,存放每個學生的平均分 函數返回值:無*/void Sort(long num[ ],int score[ ][COURSE], int n, int sum[ ], float aver[ ]){int i, j, k, m;int temp1;long temp2;float temp3;for (i=0; in-1; i++){k = i;for (j=i+1; jn; j++){if (sum[j] sum[k]) k = j;}if (k != i){temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;temp2 = num[k]; num[k] = num[i]; num[i] = temp2;temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;for (m=0; mCOURSE; m++){temp1 = score[k][m];score[k][m] = score[i][m];score[i][m] = temp1;}}}}/* 函數功能: 列印名次表,表格內包括學生編號、各科分數、總分和平均分 函數參數: 長整型數組num,存放學生學號 整型數組score,存放學生成績 整型變數n,存放學生人數 整型數組sum,存放每個學生的總分 實型數組aver,存放每個學生的平均分 函數返回值:無*/void Print(long num[ ], int score[ ][COURSE], int n,int sum[ ], float aver[ ]){int i, j;printf(” NO \t| MT \t EN \t PH \t SUM \t AVER\n”);printf(“—————————————————-\n”);for (i=0; in; i++){printf(“%ld\t| “, num[i]);for (j=0; jCOURSE; j++){printf(“%4d\t”, score[i][j]);}printf(“%5d\t%5.0f\n”, sum[i], aver[i]);}}/* 函數功能:在學號數組中順序查找學生的學號 函數參數:長整型數組num,存放學生學號 整型變數n,存放學生人數長整型變數x,存放待查找學生的學號 函數返回值:找到時,返回學生學號在學號數組中的下標位置,否則返回值-1*/int Search(long num[ ], int n, long x){int i;for (i=0; in; i++){if (num[i] == x) return(i);}return (-1);}
4、答案:#include stdio.h
void main()
{ int i , j;
double a[3][4], b[4][3];
printf(“請輸入原始矩陣:\n”);
for(i=0;i3; i++)
for( j=0; j4 ; j++)
scanf (“%lf”, a[i][j]);
printf(“計算轉置矩陣:\n”);
for(i=0;i3; i++)
for( j=0; j4 ; j++) b[j][i]=a[i][j];
printf(“輸出原始矩陣:\n”);
for(i=0;i3; i++)
{
for( j=0; j4 ; j++) printf(” %10.2f “,a[i][j]);
printf(“\n”);
}
printf(“輸出轉置矩陣:\n”);
for(i=0;i4; i++)
{
for( j=0; j3 ; j++) printf(” %10.2f “,b[i][j]);
printf(“\n”);
}
}
原創文章,作者:UMYO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/139938.html