东农17春《计算机程序设计(C语言)》离线作业-计算机程序设计(C语言)
东北农业大学网络教育学院C语言专升本作业题
作业题(一)
一、填空
1. C语言中任何程序的运行总是从主函数开始,在 函数中结束。
2.x=2,y=-3,z=3,则表达式x||y+z&&y-z的值为 。
3.系统判断字符串结束的标志是 。
4.能正确表示“当ch为小写字母为真,否则为假”的表达式是 。
5.C语言中while和do-while循环的主要区别是 的循环体至少无条件执行一次。
6.说明char s1[]=“china”,s2;要将s1的值复制到s2中的正确语句是 。
7.若用数组名作为函数调用的实参,则传递给形参的是 。
8.在C语言中实型变量分为两种类型,它们是 和 。
9.十进制11转化为八进制的值为 。
二、单项选择题
1.?_____是不正确的字符常量。
(A)'n' (B)'1' (C)"a" (D)'/101'
2.?以下程序的输出结果是
main( )
{ int i;for(i='A';i<'I';i++,i++)
printf("%c",i+32);printf(" \n");}
(A) 编译不通过,无输出 (B) aceg
(C) acegi (D) abcdefghi
3、 执行以下程序后,输出的结果是
main ()
{ int y=10;do { y - -;} while(- - y);
printf("%d\n",y --);}
(A) -1 (B) 1 (C) 8 (D) 0
4. ______把x、y定义成float类型变量,并赋同一初值3.14。
(A)float x, y=3.14; (B)float x, y=2*3.14;
(C)float x=3.14, y=x=3.14; (D)float x=y=3.14;
5. 说明: int a; 则对a数组元素的正确引用是()。
(A)a (B) a(C) a (D)a(2)(1)
6.若变量已正确定义,语句“if(a>b) k=0; else k=1;”和______等价。
(A)k=(a>b)?1:0; (B)k=a>b;
(C)k=a<=b; (D)a<=b ? 0 : 1;
7.?设变量定义为“int a, b;”,执行下列语句时,输入_____,则a和b的值都是10。
scanf("a=%d, b=%d",&a, &b);
(A)10 10 (B)10, 10 (C)a=10b=10 (D)a=10, b=10
8?若t为int类型,表达式t=1,t+5,t++的值是_____。
(A)1 (B)6 (C)2 (D)1
9.在C程序中,若对函数类型未加说明,则函数的隐含类型为_____。
(A)int (B)double (C)void (D)char
10.???? 若有以下定义和语句:int?u=010,v=0x10,w=10;printf(″%d,%d,%d\n″,u,v,w);则输出结果是___ __。
(A)8,16,10 (B)10,10,10 (C)8,8,10 (D) 8,10,10
三、阅读程序,写出程序运行结果
1.main()
{inti=1;
while(i<=10)
if(++i%2!=0)continue;
else printf(“%3d”,i);
}
2.main( )
{ inti,j,k;
charspace=‘’;
for(i=1;i<=3; i++)
{ for(j=1;j<=10-i;j ++)
printf(“%c”, space);
for(k=1;k<=2*i; k++)
printf(“*”);
printf(“\n”); }
}
main()
{inti,j,sum=0,a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{a=i+j;
if(i==j) sum+=a; }
printf(“%d”,sum);
}
4.intx,y
num()
{intx,y;
inta=10,b=5;
x=a+b;y=a-b;
}
main()
{inta=8,b=3;
x=a-b;y=a+b;
num();
printf("%d,%d",x,y)
}
5. main()
{ int i, j=4 ;
for(i=j; i<=2*j; i++)
switch (i/j)
{case 0 :
case 1: printf(“*”); break ;
case 2: printf(“#”,a);
}
}
四、程序填空
阅读程序说明及程序,把它补充成一个完整的程序
1.下面程序是用冒泡法对10个数进行从小到大排序的程序。
main( )
{ int ,i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d", );
for(i=1;i<10;i++)
for(j=0; ;j++)
if(a a)
{ temp=a; ; a=temp;}
printf("\n排好序的10个整数为:\n");
for(i=0;i<10;i++)
printf("%5d",a);
}
五、编写程序
1. 从键盘输入20个整型数,统计其中负数个数并求所有正数的平均值。
2. 编写程序,输入一个字符串,计算出这个字符串的长度(要求不能使用strlen函数)
3. 编写程序,在主函数中输入10个数,在函数invert中将10个数按反序存放,并在主函数中输出结果。
作业题(二)
填空题
一个C语言程序总是从()函数开始执行。
十进制数159转换为八进制数是()。
已知int x=6; 表达式x%2+(x+1)%2的值是()。
C语言中char型变量在内存中占() 个字节的内存单元
C语言的变量名:TEA与tea是()同的。
在屏幕上输出整型变量a,b值,每个数占5位,输出数据前有说明字符的 printf()函数为( )。
设x的值为15,n的值为2,则表达式x%=(n+=3)运算后,x的值为( )。
表达式( 5<3) && (2 || 8<4 ) 的值是( )。
a数组定义如下char a;,按照内存排列顺序,a数组中的所有元素是( )。
已知 int a[]={0,1,2,3,4,5}; 它的最大下标是( )。
(二)单项选择题
1.在C程序中所用的变量使用前( )
(A)可以不定义 (B)先定义后使用(C)随时定义随时用(D) 其他
2.以下正确的字符常量是( )
(A)“x”(B) ‘W’(C)‘’(D)‘XYZ’
3.在C语言的算术运算符中只能用于整型数的运算符是( )
(A)++ (B)/ (C) % (D)*
4.设有程序段int k=10;while (k=0)k=k-1;则下面描述中正确的是( )
(A)循环执行十次 (B)循环是无限循环
(C)循环体语句一次也不执行 (D)循环体语句执行一次
5.已知 int a; 那么 &a表示( )
(A)变量名(B)变量a的地址 (C)变量a的值 (D)其他
6.设x、y均为整型变量,且x=10 ,y=3,则以下语句的输出结果是( ) printf("%d,%d\n",x--,--y); (A) 10,3 (B) 9,3 (C) 9,2 (D)10,2
7.阅读以下程序,当输入数据的形式为:25,13,10<回车>,正确的输出结果是( )
main()
{int x,y,z;
scanf(“%d%d%d”,&x,&y,&z);
printf(“x+y+z=%d\n”,x+y+z);
}
(A)x+y+z=48 (B)x+y+z=35 (C)x+z=35 (D)不确定值
8.已知:int i; for(i=0; i<=10;i++);如果表达式1即i=0缺省那么完成表达式1功能的语句可以( )
(A)放在for语句的前面 (B)放在循环体中
(C)放在for语句的后面 (D)放在程序的任何地方
9.以下可以正确计算s=1*2*3*4*5的程序段是( )
(A)for(i=1;i<=5;i++) (B) for(i=1;i<=5;i++)
{ s=1; { s=0;
s=s*i;} s=s*i;}
(C)s=1; (D) s=0;
for(i=1;i<=5;i++) for(i=1;i<=5;i++)
s=s*i; s=s*i;
10.以下数组定义中不正确的是( ) (A) int a; (B) int b[ ]={0,1,2,3}; (C) int c={0}; (D) int d[ ]={{1,2},{1,2,3},{1,2,3,4}};
(三)写出程序运行结果
1.main()
{ int a=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d \n",a,b);
}
2.main()
{ intx=10, y=6, i=0;
for(i=y; i<= x ; i++) printf(“i=%d\n”,i);}
3. main()
{ int x=0,y=0;
do
{ y++;
x=x*x;
}while((x>0)&&(y>5));
printf(“x=%dy=%d\n”, x, y);}
4. main()
{ int a[]={1,3,5,2,7};
int b[]={5,3,9,4,6};
int c,i;
for(i=0; i<5; i++)
{c=a*b;
printf(“%d”, c);
}
}
5.若x=2,y=3,z=2,求下列表达式的值
x﹤y?y:z
x﹥y? (++x):( ++z)
(四)程序填空
下面程序将按如下形式输出杨辉三角形。
1
1
1
1
2
1
1
3
3
1
1
4
6
4
1
#define N 5
main()
{inti,j,a;char space=’ ’;
for(i=0;i<N;i++)
{ =1; =1;}
for(i=2;i<N;i++)
for(j=1; ;j++)
a= +a;
for(i=0;i<N;i++)
{ for(j=0;j<4-i;j++)
printf(“%c ”,space);
for(j=0; ;j++)
printf("%4d",a);
printf("\n");}
}
}
(五)编写程序题
编写一个函数,重复打印给定的字符n次
编一程序,输入10个数,并求出它们的和
编一程序,显示如下图案
*
**
***
****
*****
作业题(三)
一 填空题
1C语言源程序的扩展名为()。
2设charc=’A’,则语句printf(″%c″,c+32)结果为() 。
3十六进制数2a转换为十进制数是()。
4计算 x 、 y 之和的平方,表达式应写作 () 。
5执行语句“ a=5+(c=6); ”后,变量 a 、 c 的值依次为() 。
6设y是int型变量,请写出判断y为5的倍数的关系表达式() 。
7通过键盘输入整型变量a的scanf()函数为( )。
8设x是个实型变量。满足数学式|x|>4的c语言表达式是()。
9若s 是整型变量,则计算表达式 s=22/3%2 后s的值为() 。
10已知 int a;内存开辟有()个存储单元。
二 单项选择题
1. 不正确的标识符是( )
(A)_a2 (B)2ai (C)a2_i (D)Int
2.定义一个有 4 个元素的一维整型数组,正确的是( )
(A) float a ; (B) int a[]={1,2,3,4,5} ;(C) int a[]={1,2,3} ; (D) int a={1}
3.以下叙述正确的是(? )。? (A)do-while语句构成的循环不能用其他语句构成的循环来代替? (B)do-while语句构成的循环只能用break语句退出? (C)do-while语句构成的循环,在while后的表达式为非零时结束循环? (D)do-while语句构成的循环,在while后的表达式为零时结束循环
4.已知 int a=5,y; y=a++;问a,y=? ( )
(A)a=6 , y=5 (B)a=6 , y=6
(C)a=6 , y=7 (D)a=5 , y=6
5.已知 int a =5; 赋值表达式a+=a*a的值为( )
(A)5;(B)10;(C)30;(D)50;
6.已知 int a=2,b=5; 则表达式a+5>b+3的值是( )
(A)0 (B)1 (C)不确定( D)表达式错误
7.已知整型变量k的值为3,下面程序段执行的结果是( )
switch(k)
{ case 1:putchar(‘A’);break;
case 2:putchar(‘B’);break;
case 3:putchar(‘C’);
case 4:putchar(‘D’);
default:putchar(‘E’);
}
(A) CDE (B) C (C) ABC (D) ABCD
8.以下程序段输出的结果是( )
a=-1;
do
{ a=a*a;}while(a<0);
(A) 循环一次 (B) 循环两次 (C) 死循环 (D) 有语法错误
9.以下对数组的初始化正确的是( )
(A)int x={0,1,2,3,4,5};(B)int x[]={0,1,2,3,4,5};
(C)int x={5*0}; (D)int x[]=(0,1,2,3,4,5);
10.当调用函数时,实参是一个数组名,则向函数传送的是( ).
(A) 数组的长度 (B) 数组的首地址
(C)数组每一个元素的地址 (D)数组每个元素中的值
三 写出程序运行结果
1.main()
{ int x=7,a=2,b=2,c;
c=x/a%b;
printf(c=%d\n”,c);}
2.main()
{ int x=2,y=3,z;
z=x;
if(x>y) z=1;
else if(x==y) z=0;
else z=-1;
printf(“z=%d\n”,z);}
3. main()
{ int a[]={1,2,3,4,5,6,7,8,9,10}, s=0, i;
for(i=0; i<10; i++)
if(a%2==0) s=s+a;
printf(“s=%d”, s);}
4. main()
{ int a=10,b=5,x;
x=a<b?b:a;
printf(“x=%d\n”,x);}
5.main()
{ int n=2345,k=0;
while(n>1)
{
k++;
n= n/10 ;
}
printf(“%d\n”,k);
}
四 程序填空
所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如编写程序,求得并输出全部水仙花数的个数。请填空完善程序。? #include <stdio.h>? main()? {???? int hun,ten,one;?? /*百位数、十位数、个位数*/???? int num,count=0;???? for (num=100;_____(1)_____;num++)???? {?????? hum=________(2)_________;?????? ten=________(3)_________;?????? one=________(4)_________;?????? if (________(5)___________)?????? {???????? printf("%5d",num);???????? count++;??????? }????? }????? printf("\n");????? printf("No.=%d\n",count);???? }
五 编写程序题
1.求出所有正整数相乘乘积为64的数对
2. 写一个程序,读入一个 3 × 3 的矩阵,求出它的转置存入该矩阵并输出。(注:转置是将原矩阵的行列互换)
3 .输出 100 之内所有个位数字为 6 且能被 3 整除的自然数。(如: 36 , 66 , 96 ……)
作业题(四)
一 填空题
1 C语言用( )号括起来的单个或多个字符表示字符串常量。
float x, y, z;是将x, y, z; 定义为 ( )。
3 可执行的c语言程序系由一个或多个()组成。
4目前常用C语言的一个整型变量的存储容量为( )个字节。
5已知int a=1,b=2;表达式 (a<b ? a:b)的值是( )。
6在一维数组中,不同数组元素的数据类型是否可以不同( )?
7已知 int a,b,c; a或者b两个中间有一个小于c的表达式是( )。
8要使for(i=0;i<=;printf(“%d\n”,i+=2));程序段输出10个整数,i应<=( )。
9在switch语句中出现的break语句的功能是( )。
10若While((ch=getchar())==’e’) printf(“*”);输入字符串:abcde<回车>,则循环体将执行 () 次。
(二)单项选择题
1. 若变量已正确定义并赋值,下面符合C语言语法的表达式是
(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b
2. 若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是
(A) 1 (B) 2 (C) 2.0 (D) 2.5
3. 若变量a、i已正确定义,且i已正确赋值,合法的语句是
(A) a==1 (B) ++i; (C) a=a++=5; (D) a=int(i);
4. 若有以下程序段,
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3中的值是
(A) 0 (B) 0.5 (C) 1 (D) 2
5.C语言规定,程序中各函数之间(A) 既允许直接递归调用也允许间接递归调用(B) 不允许直接递归调用也不允许间接递归调用(C) 允许直接递归调用不允许间接递归调用(D) 不允许直接递归调用允许间接递归调用
6.以下程序段正确的是( )
(A)if(a>b) c=1 (B) if(a>b) c=1;
else c=2; else c=2
(C) if(a>b) c=1; (D) if(a>b); c=1;
else c=2; else c=2;
7.以下程序运行的结果是( )
main()
{int x=12,y;
y=x>12 ? x+10 : x-12;
printf(“y=%d\n”,y);}
(A)y=0 (B) y=22 (C)y=12(D)y=10
8.以下不是c语言规定保留字的是( )。
(A)float???? (B)integer???? (C)signed???? (D) unsigned
9.以下叙述中不正确的是(? )。
?? (A)在不同的函数中可以使用相同名字的变量
?? (B)函数中的形式参数是局部变量
?? (C)在一个函数内定义的变量只在本函数范围内有效
?? (D)在一个函数内的复合语句中定义的变量在本函数范围内有效
10.在宏定义 #define PI 3.14159中,用宏名PI代替一个(? )。 (A) 单精度数 (B) 双精度数 (C) 常量 (D) 字符串
(三)写出程序运行结果
1. main()
{ int a=1, b=2, c=3;
if(a>c)
b=a; a=c; c=b;
printf(“a=%d b=%d c=%d\n”,a,b,c);}
2.main()
{ int x=1, y=1, i=0;
do
{ x=x+y ; y=x+y ;i++;
printf (“x=%dy=%d\n”, x, y);
} while(i<=3);}
3.main( )
{inti=5;
do
{switch(i%2)
{case4: i--; break;
case6: i--; continue;
}
i-=2;
printf("%5d",i);
}while(i>0);
}
4. long fib(int n)
{ if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main0
{ printf(“%d\n”,fib(3));
}
5.若x=3,y=z=4,求下列表达式的值
(z>=y>=x)?1:0
z>=y&&y>=x
(四)程序填空
编写程序,实现:将自然数1、2、3、···、25以方向依此填入二维数组a(5行5列)并按照矩阵形式输出结果。??? ?? ?? ?? ?? ? 11??? 7??? 4??? 2??? 1? 16?? 12??? 8??? 5??? 3? 20?? 17?? 13??? 9??? 6? 23?? 21?? 18?? 14?? 10?? 25?? 24?? 22?? 19?? 15?请填空完善程序。?#include <stdio.h>? #define N 5? main()? {???? int i,j,k;???? int a;???? k=1;???? for (i=N-1;i>=0;i--)?????? for (j=0;j<N-i;j++)?????? {????????? a=k;????????? k++;??????? }????? for (i=1;i<=N-1;i++)????????? for (j=0;j<______(1)______;j++)????????? {????????????? __________(2)_________=k;???????????? ___________(3)__________;?????????? }?????? for (i=0;i<N;i++)???????? {???????????? for (j=0;j<N;j++)??????????????? printf("%4d",______(4)________);??????????? ____________(5)___________;????????? }??????? }
(五)编写程序题
1.设计一个判断输入年份是否是闰年的程序。
2.检测某一给定字符串的长度(字符数),不包括结束符’\0’。
3.求二维数组A中最大元素值。
作业题(五)
一 填空题
1C语言源程序的扩展名为*.C、目标文件的扩展名为()、可运行文件的扩展名为()。
2能正确表示“当A=5时布尔量BL为真,否则为假”的表达式是()。
3 3行4列的二维数组,共有()个元素。
4已知 int x; 如果用scanf(“%f”,&x);给x赋值,错误的原因是()。
5将 str定义为字符数组并初始化为“Lei”的语句是( )。
6已知 int a,b; a、b中有一个小于0的表达式是( )。
7在while(表达式) 循环语句中,表达式的值是( )时可以循环,至少循环( )次。
8在C语言中,表示逻辑量“真”用1,表示逻辑量“假”用( )。
(二)单项选择题
1. 下列不正确的转义字符是(A) '\\' (B)'\" (C) '074' (D) '\0
2.若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为 (A) float (B)int (C) char (D) double
3. 表示关系x<=y<=z的c语言表达式为 (A) (X<=Y)&&(Y<=Z) (B)(X<=Y)AND(Y<=Z) (C) (X<=Y<=Z) (D) (X<=Y)&(Y<=Z)
4.常数的书写格式决定了常数的类型和值, 0x1011 是 ( )
(A) 8 进制整型常量 (B)字符常量
(C) 16 进制整型常数 (D)2 进制整型常数
5. 设x和y均为int型变量,则执行下的循环后,y值为 for(y=1,x=1;y<=50;y++) { if(x>=10))break; if (x%2==1) { x+=5; continue;} x-=3; }(A) 2 (B)4 (C) 6 (D) 8
6.给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为(A) 数组X和数组Y等价 (B)数组x和数组Y的长度相同(C) 数组X的长度大于数组Y的长度 (D) 数组X的长度小于数组Y的长度
7.假定所有变量均已正确说明,下列程序段运行后x的值是 a=b=c=0;x=35; if(!a)x--; else if(b); if(c)x=3; else x=4; (A)34 (B)4 (C) 35 (D) 3
8. 假定a和b为int型变量,则执行以下语句后b的值为a=1; b=10;do{ b-=a; a++; }while (b--<0) ;(A) 9 (B)-2 (C) -1 (D) 8
9. 设j为int型变量,则下面for循环语句的执行结果是 for( j=10;j>3;j--) { if(j%3)j--; --j; --j; printf("%d ",j); }(A) 6 3 (B)7 4 (C) 6 2 (D) 7 3
10.设有以下宏定义:#define N 3#define Y(n) ( (N+1)*n)则执行语句:z=2 * (N+Y(5+1));后,z的值为(A) 出错 (B)42 (C) 48 (D) 54(三)写出程序运行结果
1.main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
2.int a, b;
void fun()
{ a=100; b=200; }
main()
{ int a=5, b=7;
fun();
printf("%d%d \n", a,b);
}
3.#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
4. #include <stdio.h>
main( )
{
int s=0,k;
for (k=0; k<=7;k++)
{
switch(k)
{
case 1:
case 4:
case 7:s++;
break;
case 2:
case 3:
case 6:break;
case 0:
case 5:s+=2;
break;
}
}
printf(“s=%d\n”,s);
}
5. #include<stdio.h>
main ( )
{
int j=1,k,sum,m,n=5;
sum=0;
while(j<=n)
{
m=1;
for(k=1; k<=j;k++)
m=m*k;
sum=sum+m;
j++;
}
printf(“sum=%d\n”,sum);
}
(四)程序填空
1.函数fun的功能是使一个字符串按逆序存放,请填空 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i< ;i++,j--) { m= ; str= ; str=m; } printf("%s\n",str); }2.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。 #include main() { char str,str2,c; int i,s; printf("\n input string 1:\n"); gest(str1); printf("\n input string 2:\n"); gest(str2); i=0; while((strl==str2&&(str1!= )) i++; s= ; printf("%d\n",s); }
(五)编写程序题
编一过程判定s字符串是否为一个Palindrome,所谓Palindrome是指其从正反两个方向看都是一样的,如“madam”。
已知一个一维数组a中有10个数,求出其中前n个数的和并放入a中。其中n由键盘输入。
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和就等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。
页:
[1]