C语言复习题

更新时间:2024-04-19 15:50:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Ⅰ、Please fill in the blank spaces with the correct answers. 1、The value of expression strlen(“hello,world!”); is ____________。

2、If a,b,c are integer ,run the expression c=(a=4)-(b=3)+a;,the value of variable c is 。

3、If variable x is integer,the comma expression

((x=5*6,x*6),x+20);,the value is 。

4、If it use the “putchar” function in the program,it should use include command 。

5、If int a=7,b=8,c;,running statement c=a&b;,the value of c is 。

6、In C, the format input function is , the format output function is 。

7、After statements “int j,i=1;j=++i;” are run, the value of variable

i is ,the value of variable j is 。 8、In C, one string literal terminal symbolic is 。

9、Assuming 0x3a is stored variable a , after statement “a=a>>3;” is run, the value in variable a is 。 10、The pointer variable P point to the array A, expression P+i;

point to the ,expression *(P+i); represent 。

Ⅱ、Please choose the correct option(single choice).

1、Set the variable ch is char type, the value is ‘a‘, after expression ch=(ch>=’a’&&ch<=’z’)?(ch-32):ch is run, value of variable ch is( )。

A、A B、a C、Z D、z

2、Set pointer variable p1 and p2 point to a same integer array, k is integer variable, the incorrect statement is ( )。

A、p1=p2; B、p2=k; C、k=*p1+*p2 ; D、k=*p1*(*p2);

3、Running the program fragment, then the value of variable k is ( )。

int k=3,s[2]; s[0]=k; k=s[1]*10;

A、10 B、30 C、33 D、Uncertainty

4、If a function namely “myadd” is defined as follow in the program

float myadd(float a, float b) {return (a+b);}

and it is placed behind the calling function, So, we must declare

function prototype before the function be called, the incorrect declaration statement of function prototype is( )。

A、float myadd(float, float); B、float myadd(float a, b);

C、float myadd(float a, float b); D、float myadd(float x, float y);

5、If the file is not opened correctly,returned value of the library function “fopen” is( )。

A、address B、eof C、0 D、1 6、The output of program fragment is ( )。 char str[]=”Beijin!”;

printf(“%d\\n”,strlen(strcpy(str,”China!”)));

A、5 B、7 C、12 D、14 7、When function is called ,the actual argument is array name, then

the formal argument get ( )。

A、the first address of array B、the first element of array

C、the all elements of array D、the array numbers 8、The ascending order of priority about arithmetic operators、

relational operators and assignment operators is ( )。 A、arithmetic operators、assignment operators、relational operators

B、arithmetic operators、relational operators、assignment operators

C、relational operators、assignment operators、arithmetic operators

D、relational operators、arithmetic operators、assignment operators 9、If char a[5],*p=a;,the correct assignment statement is( )。 A、p=”abc”; B、a=”abc”; C、*p=”abc”; D、*a=”abc”;

10、Assuming: int a=0; double b=1.25; char c=’a’; #define d=2 ;

the incrorrect statement is( )。

A、a++; B、b++; C、c++; D、d++;

11、Assuming:char a[10],*b=a; the statement which do not input a string into the a array is( )。

A、gets(a); B、gets(a[0]); C、gets(&a[0]); D、gets(b);

12、If pointer p point to the variable x,the statement *&p is equal with ( )。

A、x B、*p C、&x D、**p

13、The program fragment for(int i=0;i<=5;i++) i++;

the correct description is ( )。

A、the for statement run 5 times B、the for statement run 4 times

C、the for statement run 2 times D、the for statement run 3 time

14、The incorrect statement is( )。

A、if (x0) x+=y; C、if (x

D、if (x!=y) scanf (\%d\&x); else x++; 15、The program fragment

enum color{red,yellow,blue=5,green,white}c1; c1=yellow; c1=white;

the value of c1 is ( )。

A、1 B、3 C、7 D、6

III、Judge the following subjects,if correction,please fill √,otherwise × .

1、 In loop,the effects of break statement and continue statement is the same。( )

2、 The pointer variable can pointe any type value。 ( ) 3、 Definition the two dimension array, the col number and row number can be omitted。 ( )

4、 In definition and calling function,the formal parameter numbers and the actual parameter numbers can be the same。 ( )

5、 The function must be have the return value。( ) 6、In C,the array name is a pointer constant。( )

7、In structure,the type of each member can not be the same。( ) 8、In C, the basic data type are char、int、float and boolean。( ) 9、In C, the aph and APH indicate the same variable。( ) 10、The expression constant 0195 is a octal。( ) Ⅳ、program:

1、 求1+2+3+4+….+100的累加和. main(){

int i ,sum=0;

for(i=0;i<=100;i++) sum=sum+i;

printf(“sum=%d”,sum); }

2、 编写一个C程序:输入a, b, c三个值,输出其中最大者 main(){

int a,b,c,max;

printf(“please input three numbers:\\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max

printf(“the largest number is %d:\\n”,max); }

3、 从键盘输入两个0到127的整数,求两数的平方差并输出其值以及这两个整数的ASCII码对应的字符 main(){

int x,y,sub;

scanf(\,%d\&x,&y);

if(x<0||x>127||y<0||y>127){ printf(\he data error!\ exit(0); }

sub=x*x-y*y;

printf(\%c,%d\\n\x,y,sub); }

4、 输入三角形的三边长,判断这个三角形是否是直角三角形。 main(){

int a,b,c,t;

scanf(\,%d,%d\&a,&b,&c); if(a

if(a

if(a*a==b*b+c*c) printf(\\; else

printf(\\; }

5、 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数 #include main(){ char c;

int i=0,j=0,k=0,l=0;

while((c=getchar())!='\\n'){

if(c>=65&&c<=90||c>=97&&c<=122) i++;

else if(c>=48&&c<=57) j++;

else if(c==32) k++; else

l++; }

printf(\%d,j=%d,k=%d,l=%d\\n\i,j,k,l); } 6、 输入一个三位数,若此数是水仙花数输出“Y”,否则输出“N”, 若输入值不是三位数输出“data error”。 main(){

int a,b,c,d;

printf(\lease input a number:\\n\; scanf(\\&d); if(d<100||d>999){

printf(\he data error!\ exit(0); }

a=d;

b=d0/10; c=a/100;

if(d=a*a*a+b*b*b+c*c*c) printf(\\; else

printf(\\; }

7、 给出一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,81~89分为“B”,70~79为“C”,60~69为“D”,60分以下为“E”。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。请用switch语句加以实现。 main(){

int score,s; char grade;

printf(\lease input the score:\\n\; scanf(\\&score);

while(score<0||score>100){

printf(\he score is error!\ exit(0); }

s=score/10; switch(s){

case 9: grade='A';break; case 8: grade='B';break; case 7: grade='C';break; case 6: grade='D';break; case 5: case 4: case 3: case 2: case 1:

case 0: grade='E';break; }

printf(\he score is %d,the grade is %c.\\n\score,grade); }

8、 输入一组整数,统计其中奇数偶数个数,直到遇到回车为止。

算法分析:可设一整型变量x,循环的输入整数的值,若x%2==0即为偶数,否则是奇数。 main(){ int x,i,j;

scanf(\\&x); while(x!='\\n') {

if(x%2==0) i=i+1; else

j=j+1;

scanf(\\&x); }

printf(\d,j:%d\i,j); exit(1); }

9、 打印如下图案 *

* * * * * * * * * * * * * * *

算法分析:从图案中找出行数,空格数,星号数间的关系如下: 行数 空格数 星号数 1 3 1 2 2 3 3 1 5 4 0 7

i 4-i 2*i-1

可用双重循环控制整个图案的输出。若用循环变量i,j分别控制外层,内层循环,则i的取值从1到4,表示行数,在每行中要确定前面空格个数和星号个数,空格个数是4-i,星号个数是2*i-1。 void main(){ int i,j,k;

for(i=1;i<=4;i++){ for(j=1;j<=4-i;j++) printf(\\;

for(k=1;k<=2*i-1;k++) printf(\\; printf(\n\ } }

10、把费波拉契(Fibonacci)数列的前50个数输出 int fbi(int i){ int f; if(

i==1||i==0){ f=1;

return f;} else{

f=fbi(i-1)+fbi(i-2); return f; } }

main(){ int i,j;

for(i=0;i<50;i++) {

j=fbi(i);

printf(\\\n\j); } }

11、分别求一个5×5矩阵的所有行之和、列之和、两条对角线上的元素之和。(二维数组的应用) 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 main(){ int i,j; int

x[5][5]={{17,24,1,8,15},{23,5,7,14,16},{4,6,13,20,22},{12,12,19,21,3},{11,18,25,2,9}};

int rowSum[5],colSum[5],diagSum1,diagSum2; int flag=1;

for(i=0;i<5;i++){ rowSum[i]=0; for(j=0;j<5;j++)

rowSum[i]=rowSum[i]+x[i][j]; }

for(j=0;j<5;j++){ colSum[j]=0; for(i=0;i<5;i++)

colSum[j]=colSum[j]+x[i][j]; }

diagSum1=0; for(j=0;j<5;j++)

diagSum1=diagSum1+x[j][j]; diagSum2=0; for(j=0;j<5;j++)

diagSum2=diagSum2+x[j][5-1-j]; for(i=0;i<5;i++)

printf(\\rowSum[i]); for(i=0;i<5;i++)

printf(\\colSum[i]); printf(\\diagSum1); printf(\\diagSum2); }

12、输入一长度不超过10的字符串,判断它是否回文(字符串的应用)

#include main(){

into i,j,flag=1; char s1[10]; scanf(\\s1);

for(i=0,j=strlen(s1)-1;i

printf(\\; }

13、打印杨辉三角形前10行。 1

1 1

1 2 1

1 3 3 1

1 4 6 4 1 1 5 10 10 5 1 main(){

int a[10][10],i,j; for(i=0;i<10;i++) for(j=0;j<=i;j++) {

if(i==j||j==0) a[i][j]=1; else

a[i][j]=a[i-1][j]+a[i-1][j-1]; printf(\d\a[i][j]); if(i==j)

printf(\n\ } }

14、有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值以及他所在的行号和列号. main(){

int i,j,row=0,col=0,max;

int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0];

for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max){ max=a[i][j]; row=i; col=j; }

printf(\x=%d,row=%d,col=%d\\n\max,row,col);

}

15、写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。 main(){

char str[100]; gets(str); fanxu(str); puts(str); }

fanxu(char str[100]){ int i,t,j;

char str1[100]; strcpy(str1,str); t=strlen(str);

for(i=0,j=t-1;j>-1;i++,j--) str[i]=str1[j]; }

16、定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值 #define CHANGE(a,b,t) t=a;a=b;b=t main(){ int c,d,s;

scanf(\,%d\&c,&d); CHANGE(c,d,s);

printf(\%d,d=%d\\n\c,d); }

17、输入两个整数,求他们相除的余数。用带参的宏来实现,编程序

#define Q(a,b) a%b main(){ int c,d,t;

scanf(\ %d\&c,&d); t=Q(c,d);

printf(\%d\\n\t); }

18、编写一个函数print,打印一个学生的成绩数,该数组中有5个学生的数据记录,每个记录包括num、name、sore[3],用主函数输入这些记录,用print函数输出这些记录。 #define N 5 struct student{ char num[6]; char name[8]; int score[4]; }stu[N];

void main(){ int i,j;

void print(struct student stu[N]); for(i=0;i

printf(\nInput score of student%d:\\n\i+1); printf(\O:\

scanf(\\stu[i].num); printf(\ame:\;

scanf(\\stu[i].name); for(j=0;j<=3;j++){

printf(\re%d:\j);

scanf(\\&stu[i].score[j]); }

printf(\n\ }

print(stu); }

void print(struct student stu[N]){ int i,j;

printf(\n NO,name score1 score2 score3\\n\; for(i=0;i

printf(\ss\stu[i].num,stu[i].name); for(j=1;j<=3;j++)

printf(\d\stu[i].score[j]); printf(\n\ }

}

19、从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以“!”结束。

#include main() {

FILE *fp;

char str[100]; int i=0;

if((fp=fopen(\\\\=NULL) {printf(\an not open the file\\n\ exit(0); }

printf(\nput a string:\\n\; gets(str);

while(str[i]!='!')

{if (str[i]>='a'&&str[i]<='z') str[i]=str[i]-32; fputc(str[i],fp); i++; }

fclose(fp);

fp=fopen(\t\\\;

fgets(str,strlen(str)+1,fp); printf(\\\n\str); fclose(fp);}

本文来源:https://www.bwwdw.com/article/nm2p.html

Top