程序设计基础-学习指南一.填空题1.计算机系统是由()、()两部分组成。
2.程序执行过程中其值保持不变的量称为()。
它又可以分为()、()、()。
3.()语句的作用是从switch、for、while或do-while语句中跳出来,终止这些语句的执行,把控制转到被中断的循环语句或switch语句之后去执行。
4.标准字符串处理函数的头文件是()。
5.在C语言中,字符串实际上是指字符串第一个字符的(),所以字符串数组中的每一个元素实际上是每一个字符串的()。
6.putchar( )函数的函数功能是( )。
7.Static char a[15]={‘H’,’a’,’p’,’p’,’y’,’.’};这个初始化语句中有9个数组元素没有给出初值,系统会自动对它们赋值为()或()。
8.由于指针变量直接指向变量,所以称为()。
而如果通过指向指针的指针变量来访问变量则构成()。
二.选择题1.下列哪个不是算法的特征()A.有穷性B.可行性C.不确定性D.输入2.设:x=9;y=++x;,则产生的结果是()A.x=9;y=9; B.x=10;y=10; C.x=9;y=10; D.x=10;y=9;3.下列说法错误的是()A.for语句中,<表达式1> 、<表达式2>和<表达式3>都可以缺省。
B.<表达式2>缺省,系统会认为此处的值是0C.for语句的三个表达式可以是任何类型的表达式D.for语句可以嵌套使用4.关于数组,下列说法正确的是()A.对数组的初始化操作在定义数组的同时进行B.给数组赋初值时,必须所有数组元素都被赋值C.给数组元素全部赋初值时,一定要指明数组的大小。
D.引用数组元素的时候,可以一次引用数组中的全部元素5.以下说法错误的是()A.C程序必须从main( )函数开始执行B.所有函数在定义上讲都是相互独立的,不存在嵌套定义C.C语言中有两类函数,系统提供的库函数和用户自定义的函数D.参数的作用是向函数传递不同的数据6.对于如下的表达式:int a[3][4],*p;p=*a;执行p++操作之后,*p表示取()的内容。
A.a[0][0] B.a[1][0] C.a[1][1] D.a[0][1]7.以下函数,哪个不属于动态申请空间的标准库函数()A.malloc( ) B.calloc( ) C.free( ) D.strcmp( )8.执行下列两个语句后,输出的结果为()char c1=66,c2=98;printf(“%c,%d”,c1,c2);A.66,98 B.66,b C.B ,97 D.B,989.以下程序的输出结果是( )main(){int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A.1 B.0 C.非0的数D.-110.若int i=10;执行下列程序后,变量i的正确结果是( )switch ( i ){case 0: i+=1;case 10: i+=1;case 11: i+=1;default: i+=1;}A.10 B.11 C.12 D.1311.以下说法错误的是()A.int (*p)( ) ; 表示p被定义为一个指向返回值为整数的函数的指针B.使用指向函数的指针是结构化程序设计的一种有效手段。
C.char **p相当于char *(*p)D.指针数组的元素补仅能存放地址,还可以存放其他数组的元素。
12.关于链表的插入和删除,下列说法错误的是()A.插入位置包括表头、表中和表尾B.从链表中删除一个结点,就是把它从内存中抹掉。
C.要删除链表中的某个结点,需自己定义删除函数。
D.删除结点要注意删除的结点是否是头结点13.以下不能定义为用户标识符的是()A.scanf B.Void C._3com_ D.int14.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是( ) A.p=2*(int*)malloc(sizeof(int));B.p=(int*)malloc(2*sizeof(int));C.p=(int*)malloc(2*2);D.p=(int*)calloc(2,sizeof(int));15.有如下程序, 该程序的输出的结果是( )int addc(int a,int b,int c){c=a+b;return(c);}main(){int x=4,y=2,z,r;z=x+y;r=addc(addc(x,y,z),addc(y,z,x),z);printf("%d\n",r);}A.36 B.12 C.14 D.6三.程序填空题1.求1+2!+3!+…+20!的和。
#include "stdio.h"void main(){float n,s=0,t=1;for( ①){②③}printf("1+2!+3!...+20!=%e\n",s);getch();}2. 下面程序求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222….#include "stdio.h"void main(){int a ,n,count =1;long int sn=0,tn=0;printf("please input a and n\n");scanf( ①);printf("a=%d,n=%d\n",a,n);while( ②){tn=tn+a;③a=a*10;④}printf("a+aa+...=%ld\n",sn);getch();}四.程序设计题1.编写一个程序,要求能够将输入的任意一个三位数颠倒过来。
2.用选择法对任意输入的一个10元整数数组排序(从小到大)。
3.用指针设计一个可以计算字符串长度的程序。
4.利用冒泡法将10个数组元素按从小到大顺序排列。
5.编写一个可以实际交换两个变量数值的函数。
6.用公式11114357π≈+-+ 求π的近似值,直到最后一项的绝对值小于610-为止,请编程实现。
7.求一个3×3矩阵对角线元素之和。
8.写一个程序,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
9.利用数组技术写一程序,使之打印出以下图形。
&&&&&&&&&&&&&&&&&&&&程序设计基础-学习指南答案一.填空题1.硬件系统、软件系统2.常量、整型常量、实型常量、字符型常量3.Break4.“string.h”5.指针首地址6.将给定的一个字符常量或字符变量的内容输出到显示器屏幕上7.0、‘\0’8.“单级间址”、“二级间址”二.选择题1C 2B 3B 4A 5B 6D 7D 8D 9A 10C 11D 12B 13D 14A 15C三.程序填空题1.①:n=1;n<=20;n++②:t*=n;③:s+=t;2.①:"%d,%d",&a,&n②:count<=n③:sn=sn+tn;④:++count;四.程序设计1.解:#include <stdio.h>void main(){int units,tens,hundreds,a,b;printf("Please input a number(100~999):");scanf("%d",&a);hundreds=a/100;tens=(a-hundreds*100)/10;units=a-hundreds*100-tens*10;b=100*units+tens*10+hundreds;printf("after change,the number is:%d\n",b);}2.解:#include <stdio.h>void main(){int a[10];int i,min,k,temp;printf("Please input 10 integer numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++){min=i;for(k=i+1;k<10;k++){if(a[k]<=a[min]) min=k;}temp=a[i];a[i]=a[min];a[min]=temp;}for(i=0;i<10;i++)printf("%-4d",a[i]);}3.答:int strlen(s)char *s;{char *p=s;while(*p!='\0')p++;return(p-s);}4.解:#include <stdio.h>void main(){int a[10],i,j,temp;printf("Please input 10 integer numbers:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}for(i=0;i<10;i++)printf("%-4d",a[i]);}5.答:#include <stdio.h>swap(int *p,int *q){int temp;temp=*p;*p=*q;*q=temp;}void main(){int a , b, *pa,*pb;printf("Please input 2 integer numbers:");scanf("%d%d",&a,&b);pa=&a;pb=&b;swap(pa,pb);printf("%d %d",a,b);}6.答:#include "stdio.h"#include "math.h"main(){int s;float n,t,pi;t=1.0; pi=0; n=1.0; s=1;while((fabs(t))>1E-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}7.解:#include <stdio.h>void main(){int a[3][3],sum=0;int i,j;printf("enter data:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum);}8答:#include <stdio.h>int len(char *p){int n=0 ;while(*p!='\0'){n++;p++;}return(n);}void main(){int length;char *str[20];printf("Please input a string :\n");scanf("%s",str);length=len(str);printf("the length of the string is %d",length);}9.答:#include "stdio.h"sort(int **p,int n){int i,j,*tp;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++)if(**(p+i)>**(p+j)){tp=*(p+i);*(p+i)=*(p+j);*(p+j)=tp;}}}main(){int i,n,da[20],**p,*pu[20];scanf("%d",&n);for(i=0;i<n;i++)pu[i]=&da[i];for(i=0;i<n;i++)scanf("%d",pu[i]);p=pu;sort(p,n);for(i=0;i<n;i++)printf("%d 12",*pu[i]);printf("\n");getch();}。