C语言练习题1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、填空共10题(共计20分)
第1题(2.0分)
定义int a[2][3];表示数组a中的元素个数是【1】个.
第2题(2.0分)
已知a=13,b=6, a/b的十进制数值为【1】.
第3题(2.0分)
已知a=13,b=6, !a的十进制数值为【1】.
第4题(2.0分)
函数调用时的实参和形参之间的数据是单向的【1】传递.
第5题(2.0分)
当a=3,b=2,c=1;时,执行以下程序段后 c=【1】.
if(a>b) a=b;
if(b>c) b=c;
else c=b;
c=a;
第6题(2.0分)
程序段int k=10; while(k=0) k=k-1;循环体语句执行【1】次.
第7题(2.0分)
已知a=13,b=6, a||b的十进制数值为【1】.
第8题(2.0分)
函数的定义不可以嵌套,但函数的调用【1】嵌套.
第9题(2.0分)
若有以下数组a,数组元素:a[0]~a[9],其值为
9 4 12 8 2 10 7 5 1 3
该数组中下标最大的元素的值是【1】.
第10题(2.0分)
函数调用语句func((e1,e2),(e3,e4,e5))中含有【1】个实参.
二、判断共10题(共计10分)
第1题(1.0分)
标识符define是C语言中的关键字。

第2题(1.0分)
假设有int a[10], *p;则p=&a[0]与p=a等价。

第3题(1.0分)
x*=y+8 等价于 x=x*(y+8)。

第4题(1.0分)
通过return语句,函数可以带回一个或一个以上的返回值。

第5题(1.0分)
函数strlen("ASDFG\n")的值是7。

第6题(1.0分)
有如下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是 *(p+8).
第7题(1.0分)
C语言本身不提供输入输出语句,输入和输出操作是由函数来
实现的。

第8题(1.0分)
进行宏定义时,宏名必须使用大写字母表示。

第9题(1.0分)
字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.
第10题(1.0分)
表达式 (j=3, j++) 的值是4.
三、单项选择共10题(共计20分)
第1题(2.0分)
若有说明:int *p,m=5,n;以下正确的程序段是()。

A:p=&n;scanf("%d",&p);
B:p=&n;scanf("%d",*p)
C:scanf("%d",&n);*p=n;
D:p=&n;*p=m;
第2题(2.0分)
以下不符合C语言语法的赋值语句是()。

A:j++;
B:j=j=5;
C:k=(2*4,k*4);
D:y=float(j);
第3题(2.0分)
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为()。

A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);
第4题(2.0分)
下列说法中错误的是
A:一个数组只允许存储同种类型的变量
B:如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值
C:数组的名称其实是数组在内存中的首地址
D:当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改
第5题(2.0分)
以下叙述正确的是()。

A:do-while语句构成的循环不能用其它语句构成的循环来代替.
B:do-while语句构成的循环只能用break语句退出.
C:用do-while语句构成的循环,在while后的表达式为非零时结束循环.
D:用do-while语句构成的循环,在while后的表达式为零时结束循环
第6题(2.0分)
对于基本类型相同的两个指针变量之间,不能进行的运算是()。

A:<
B:=
C:+
D:-
第7题(2.0分)
先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是()。

A:c='a';
B:c="a";
C:c="97";
D:C='97'
第8题(2.0分)
以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A:char s[10]="abcdefg";
B:char t[]="abcdefg",*s=t;
C:char s[10];s="abcdefg";
D:char s[10];strcpy(s,"abcdefg");
第9题(2.0分)
C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是()。

A:void
B:int
C:float
D:double
第10题(2.0分)
已定义两个字符数组a,b,则以下正确的输入格式

A:scanf("%s%s", a, b);
B:get(a, b);
C:scanf("%s%s", &a, &b);
D:gets("a"),gets("b");
四、程序填空共1题(共计10分)
第1题(10.0分)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。

-------------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
main()
{
int i,n,sum;
sum=0;
/***********SPACE***********/
【?】;
/***********SPACE***********/
for(i=1; 【?】 ;i++)
/***********SPACE***********/
if(【 sum=sum+i;?】)
if(i%2==0)
{
n++;
printf("%6d",i);
/***********SPACE***********/
if(【?】)
printf("\n");
}
printf("\ntotal=%d",sum);
}
答案:
=======(答案1)=======
n=0
=======(答案2)=======
i<=300
=======(答案3)=======
i%7 == 0 || i%17 == 0
=======(答案4)=======
n%5 == 0
五、程序改错共1题(共计10分)
第1题(10.0分)
/*------------------------------------------------------ 【程序改错】
--------------------------------------------------------
功能:计算正整数num的各位上的数字之积。

例如:输入252,则输出应该是20。

------------------------------------------------------*/
#include <stdio.h>
long fun (long num)
{
/**********FOUND**********/
long k;
do
{
k*=num%10;
/**********FOUND**********/
num\=10;
}while (num);
return k;
}
main()
{
long n;
printf("\nPlease enter a number:");
/**********FOUND**********/
scanf("%ld", n);
/**********FOUND**********/
printf("\n%ld\n",fun(long n));
}
答案:
=======(答案1)=======
long k=1;
=======(答案2)=======
num=num/10;
=======(答案3)=======
scanf("%ld",&n);
=======(答案4)=======
printf("\n%ld\n",fun(n));
六、程序设计共2题(共计30分)
第1题(10.0分)
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。

调用该函数找出
100~200之间满足条件的所有数。

------------------------------------------------*/
#include <stdio.h>
void wwjt();
int sub(int m)
{
/**********Program**********/
/********** End **********/
}
main()
{
int i;
for(i=100;i<=200;i++)
if(sub(i)==1)
printf("%4d",i);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
int n;
int i[10];
int o;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Read FILE Error");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Write FILE Error");
}
for(n=0;n<10;n++)
{
fscanf(IN,"%d",&i[n]);
for(n=0;n<10;n++)
{
o=sub(i[n]);
fprintf(OUT,"%d\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int k,s=0;
do
{s=s+m%10;
m=m/10;
}while(m!=0);
if(s%7==0)k=1;
else k=0;
return(k);
----------------------
第2题(20.0分)
/*------------------------------------------------ 【程序设计】
--------------------------------------------------
功能:将主函数中输入的字符串反序存放。

例如:输入字符串“abcdefg”,则应输出“gfedcba”。

------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define N 81
void wwjt();
void fun(char *str,int n)
{
/**********Program**********/
/********** End **********/
}
main()
{
char s [N];
int l;
printf("input a string:");gets(s);
l=strlen(s);
fun(s,l);
printf("The new string is :");puts(s);
wwjt();
}
void wwjt()
{
FILE *IN,*OUT;
char sin[20],*sOUT;
int iLENGTH;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Please Verify The Currernt Dir..it May Be Changed"); }
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("Please Verify The Current Dir.. it May Be Changed"); }
fscanf(IN,"%s",sin);
iLENGTH=strlen(sin);
sOUT=sin;
fun(sin,iLENGTH);
fprintf(OUT,"%s\n",sOUT);
fclose(IN);
fclose(OUT);
}
答案:----------------------
int i,j;
char c;
for(i=0,j=n-1;i<j;i++,j--) {c=str[i];
str+[i]= str[j];
str[j]=c;}
----------------------。

相关文档
最新文档