11
#include\void main()
{int max,min,*p,a[10],i; for(i=0;i<10;i++) scanf(\ p=a; max=a[0];
for(i=1;i<10;i++,p++) if(max<*p)
max=*p;
for(i=1;i<10;i++) /*从第二元素开始检查是否是最大元素*/
while(a[i]==max)
a[i]=a[0]; /*将第一个元素赋给最大元素单元*/
31试编程序,输入整数a和b,若a+b大于100,则输出a?b百位以上(包括百位)的数字,否则输出两数之和。
#include
p=s1+m; void f1() /*第一题的函数*/
strcpy(s2,p); {int a,b;
} int i,j;
void main() printf(\
{char s1[100],s2[100]; scanf(\
int m; getchar();
f1(); i=a*a;
printf(\ j=b*b;
gets(s1); if(i>100&&j>100)
printf(\ {i=i/100;
scanf(\ j=j/100;
f2(s1,m,s2); printf(\
printf(\ }
puts(s2); else printf(\
getch(); }
} void f2(char *s1,int m,char *s2) /*第二题的函
数*/
32试编程序,求一个整数任意次方的最后三位数。即求x的最后三位数,要求x,y从键盘输入,使用循环实现,不能使用数学库函数。
#include
扩展1:求15的个、十、百位上数字之和。 #include
int i,m=1,sum=0; for(i=1;i<15;i++) {
m=m*1500; }
159y a[0]=max; /*将最大值送入第一元素中*/
p=a; min=a[9];
for(i=1;i<10;i++,p++) if(min>*p) min=*p;
for(i=1;i<10;i++) while(a[i]==min) a[i]=a[9]; a[9]=min; for(i=0;i<10;i++) printf(\}
2222 while(m) {
sum+=m; m/=10; }
printf(\ return 0; }
12
扩展二:如何将十位百位数字对换,如135变成315
#include
#include
34输出100以内每位数的积大于每位数的和的所有正整数。
#include \ while (m>=1) { #include \ k*=m; s+=m; void main ( ) m=m/10 ; { int n,k=1,s=0,m ; } for (n=1 ; n<=100 ; n++) { if(k>s) printf(\ k=1 ; s=0 ; } m=n; }
35通过循环按行优先顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。
#include
int a[5][5],k=1; for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) { a[i][j]=k; k++;
} }
for(i=0;i<5;i++) {
for(int j=0;j<=i;j++) printf(\ printf(\ } return 0; }
36从键盘输入若干整数(个数小于50),其值在0至4的范围内,用-1作为输入结束的标志。统计每个整数的个数。
#include \ b[++h]=a[j]; #define N 1000 j++; int main(){ l=0; i=0,j=2,h=1,k,l=0,b[N],n,c[N]; if(j==i+1) while(a[i]!=-1) break; scanf(\ } i--; for(j=1;j<=h;j++) b[1]=a[1]; printf(\ while(1) k=1,l=0,n=0; { while(1) for(k=1;k<=h;k++) { for(j=1;j<=i;j++) if(a[j]==b[k]) if(a[j]==b[k]) l++; l++; if(l==0) c[++n]=l;
13
l=0; putchar('\\n'); if(k==h) for(i=1;i<=n;i++) break; printf(\第%d个数出现%d次\\n\ k++; } } k=0;
37定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每6个数求出一个平均值,放在另一个数组中并输出。
#include \void main() {
int a[30],b[5],i=0,j;
while(i<30) a[i++] =2*(i+1); i=0;
while(i<5)
{j=i*6; b[i]=a[j]+a[j+1]+a[j+2]+a[j+3]+a[j+4]+a[j+5];b[i]/=6; i++; } i=0;
while(i<5) printf(\}
38数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。
# include
for (i=1;i<3;i++) printf (\请输入10个数\
printf(\ for (i=0;i<10;i++);
printf(\ scanf(\
} for (i=9;i>0;i-2)
{
39编写函数sstrcmp,实现两个字符串的比较(即实现与strcmp函数功能相同的函数)。若两个字符串相等,返回值为0;若不等,则返回两个对应字符串的ASCII码值差值。若前者大,应返回正值,若后者大,应返回负值。
int __cdecl strcmp ( const char * src, const char * dst ) {
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) ++src, ++dst; if ( ret < 0 ) ret = -1 ; else if ( ret > 0 ) ret = 1 ; return( ret ); }
判断题
81.feof(fp)函数用来判断fp所指向的文件是否结束,若遇到文件结束符,函数feof()的返回值是真(非0),否则为假(0) T
80. C语言中,文件的存取方式可以是随机存取,也可以是顺序存取 T 79. C语言可以处理的文件类型只有文本文件 F 78. \文件\一般指存储在外部介质上的数据集合 T
77. 在定义一个共用体变量时,系统分配给它的存储空间是该共用体变量中占用最大存储空间的成员
14
所需的存储空间 T
76. 在C语言中,一个包含若干不同类型的数据项的数据结构称为结构体 T 75. 已知共用体 union u { int a; char c; float f; }
其各个成员地址&u.a、&u. c、&u.f是不相同的 F
74. 使几个不同类型的变量共占同一段内存的结构称共用体 T
73. 若已定义指向结构体变量stu的指针p,在引用结构体成员时,有三种等价的形式,即stu.成员名、*p.成员名和p->成员名 F
72. 只可以通过求地址运算\获得地址值 F 71. 语句\定义了两个指针变量 F
70. 设int a,*p;则语句p=&a;中的运算符\的含义是取变量地址 T 69. 空指针p十指相地址为0的存储单元的指针 F 68. 可以利用指针实现函数返回多个值的效果 T 67. 地址运算符\只能应用于变量和数组元素的运算 T 66. 作为函数形式参数时,int x[][5]与int (*x)[5]两种写法等价 T 65. 指向函数的指针变量的值是一个函数的入口地址 T
64. 如果一个变量的值是一级指针变量的地址,则称这个变量为二级指针变量 T 63. 二维M*N数组的名字是一个指向N元数组的指针常量T 62. 进行宏定义时,可以引用已经定义的宏名进行层层置换T 61. 宏名没有作用域,在整个文件范围内都有效F 60. 带参数的宏名无类型,它的参数也无类型T
59. 带参数的宏定义,进行宏展开时与函数调用主要区别是:只替换,不求值 T 58. 被包含的文件修改后,凡包含此文件的所有文件都要重新编译 T 57. 在一个函数中定义的静态局部变量不能被另一个函数调用 F 56. 在程序运行过程中,系统分配给实参和形参的内存单元是相同的F
55. 在C语言中,主函数可以调用任意一个函数,但是不能使用其他函数中定义的变量T 54. 用数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值F 53. 一个函数中有且只能有一个return语句F 52. 所有定义在主函数之前的函数无需进行声明T
51. 如果一个静态(static)或外部(extern)数组不进行初始化,则对数值型数组隐含初值为0 T 50. 如果函数值的类型与返回值类型不一致,以函数值类型为准T 49. int、auto、extern、void都是属于C语言关键字T
48. C语言规定,程序中各函数之间既允许嵌套定义,也允许嵌套调用F 47. C语言程序由函数为单位,可以包含一个或多个函数,函数名任意F 46. 在函数的定义和调用过程中,形式参数和实在参数数目可以不一致F 45. 若一个函数的返回类型为void,则表示其没有返回值T 44. 在定义二维数组时,可以将该数组的两个维数全部省略F
43. 已有定义int x[5];,则该定义语句说明x是具有5个元素的一维数组,且数组元素是x[1], x[2], x[3], x[4], x[5] F
15
42. 数组的每个元素占用相同的字节数T 41. 数组必须先定义再使用T
40. 若有定义:double x[3][5];则x数组中行下标的下限为0,列下标的上限为4 T
39. 若对字符串str1和字符串str2比较大小,必须使用字符比较函数strcmp(str1, str2),不能使用关系运算符进行比较,例如str1==str2 Y T
38. 对两个数组a和b进行如下初始化:char a[ ]=\a[ ]={'A','B','C','D','E','F'};a数组和b数组的长度相同 F
37. 定义数组时,数组下表可以是整型常量或正整型常量表达式 F 36. 当数组长度与初值个数不相同时,在定义数组时必须指定数组的长度T 35. int a[9]; 则a数组的下标范围是1~9 F
34. C语言中,对数组定义大小事,若想在程序运行时改变大小,可用下面的语句段定义 int m;
scanf(\
int x[m]; F
33. C语言编译系统为所定义的数组变量在内存中是分配一片连续的存储单元 T 32. 数组的下标从1开始F
31. 二维数组a[2][3]有6个数组元素T 30. 能正确表达逻辑关系\ F
29. 带有语句标号的语句的正确书写方法是\语句标号:语句\ T 28. while循环语句至少无条件执行一次循环体 F
27. goto语句和break语句都能够实现使程序执行的流程从循环体内跳至循环体外T 26. for循环语句只能用于循环次数已经确定的情况F
25. for循环语句先判断循环条件是否成立,然后再决定是否执行循环体T 24. do-while循环语句中,根据情况可以省略关键字while F 23. do-while循环语句的特点是先执行循环体,然后判断循环条件是否成立T
22. continue语句在循环体中出现,其作用是结束本次循环,接着进行是否执行下一循环的判定T 21. 在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行T 20. 在VC++ 6.0中,switch与case后的表达式可以为任意类型F 19. 在switch语句中必须使用break语句F
18. 在if语句中,if后面的表达式可以是关系表达式与逻辑表达式,但不能是算术表达式F 17. 在C语言中,逻辑\真\等价于不等于0的数T
16. 选择结构不可以使用嵌套形式,但是循环结构可以使用嵌套形式F 15. 所有逻辑运算符的优先级都高于关系运算符F
14. 设x、t均为int型变量,则执行语句x=10;t=x&&x>10;后,t的值为0 T 13. 关于if语句中,条件表达式只能是关系表达式或逻辑表达式F 12. 关于if语句中,条件表达式的括号不可以省略T 11. break语句只能用于switch语句中F
10. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值F 9. 在C语言中,变量必需先定义后使用T
8. 在C语言中,5种基本数据类型的存储空间长度的排列顺序为:charT 7. 在C语程序中,无论是整数还是实数,都能被准确无误地表示F 6. 在C程序中,每行中只能写一条语句F 5. 在C程序中,%是只能用于整数运算的运算符T
4. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变T