#include
{ int i,d,m,n; char s[ 8 ];
scanf(″%d″,&n) ;
i=0; /*i是用来存放转换后的字符的数组元素下标*/ do{ m=n/8; d=n%8;
s[ i ]=’0’+d; i++; n=m;
}while(n!=0) ;
for (i一一;i>=0;i一一) /*反向输出字符*/ putchar(s[ i ]);
3.程序填空。在 处填写合适的语句,完善下列程序。
(1)从键盘输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。 #include
{ int data,temp,k;
static int a[9]={-10,2,4,8,10,15,25,50};
printf(″\nEnter a data:″) ; scanf(″%d″,&data); ;
for (k=8; ;k一一)
if (a[k]
{ ;
a[k]=a[k一1];
a[k-1]=temp;
}
else ; for(k=0; ;k++) printf(\%7d\,a[ k ] ) ;
(2) 从键盘输人一串英文字符(不含空格与其他字符),统计每个字符的个数,并输出字母及相应的个数。
include
{ int i=0,c[52]={0},m=0;
char str[80];
printf(″Input a string:″) ;
scanf( ,str) ; while(str[ i ])
{ if (str[ i ]>= ′A′&& ) c[str[ i ]一′A′]++ ;
if(str[ i ]>=′a′&&str[ i ]<=′z′) ; i++;‘
}
for (i=0;i<26;i++)
if(c[ i ]) {if(m%8= =0) putchar(′\n′);m++;
printf(″%c:%一d″,i+′A′,c[i]); }
for(i=0;i<26;i++)
if(c[i+26]){if(m%8= =0)putchar(′\n′) ;m++;
printf(″%c:%一d″, ,c[ i+26 ]) ; } }
4.求一组成绩的平均分数以及高于平均分的成绩:设给定的成绩为90,85,92,77,80,62。
5.编写程序,输入一组整数,将它们排序后由小到大输出。
6.从键盘输入一个4X 4整数矩阵,以主对角线(\)为对称轴,将左下角元素中较大元素代替右上角对应元素,并将右上角元素(含对角线元素)输出。
7.通过键盘给3X 4的二维数组输人数据.然后分别按行和按列输出数组元素。
8.编写程序,将两个字符串连接起来,不要使用strcat函数。
9.输入一行字符串,统计该字符串中字符对ab的个数。
10.从键盘输人10个字符串,找出一个最长的字符串。
11.已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
第8章 指针
1.选择题
(1)若函数f定义如下: void f(char *d,char *s) { while(*d++=*s++);} 函数f的功能是( )。
A.串比较 B.串复制 C.求串长 D.串反向
(2)有定义int arr[10]={0,1,2,3.4,5,6,7,8,9},*p,i=2;若执行语句: p =arr;
printf(″%d″,*(p+i )); 输出结果为( )。
A.0 B.2 C.3 D.1
(3)有定义int td[ ][3]={1,2,3,4,5,6},以下几种方法中,不能正确表示i行i列元素的是( )
A.td[i][j] B.*(td[i]+j) C.*(*(td+i)+j) D.*(td+i+j)
2.写出下列程序的运行结果。 (1) void main( )
{ int a,*pl,*p2; a=10; pl=&a; p2=pl;
printf(″The Value is %d || %d || %d\\n″,a,*p1,*p2); *pl=11;
printf(″The Value is %d || %d || %d\n″,a,*p1,*p2); }
(2)若输入字符串program时,写出下列程序输出结果 #include
void prochar(char *str,char ch); scanf(″%s″,str); prochar(str,′r′); puts(str); }
void prochar(char *str,char ch) {char *p;
for(p=str;*p!=’\0’;p++)
if(*p= =ch) {*str=*p;(*str)++;str++;}
*str=’\0’ ; }
3.填空题
(1)下面程序完成从键盘输入两个字符串a和b,再将a和b的对应位置字符中的较大者存放在数组c中,填空完善该程序。
# include
char a[80],b[80],c[80]={’\0’},*p,*q; p=a;q=b;
gets(a) ; gets(b) ;
while ( )
{ if ( ) c[k]=*p; else c[k]=*q;
p++; ;k++; }
if (*p!=0) strcat(c,p) ; else strcat(c,q) ; puts(c) ; }
(2) 以下程序从键盘输入10个不相同的数到数组a中,再输入一个数到x中,在a中查找与x 值相同的元素所在的位置,填空完善该程序。
#include
int a[11] ,x,i;
printf(″Input 10 integers:\\n″); for (i=1; ;i++)
scanf(″%d″, ) ; printf(″Input x:\\n″); scanf(″%d″,&x) ; *a=x;i=10; while (x!=*(a+i ))
if ( ) printf(″m’s position is :=\\n″,x,i); else printf(″m Not been found !\\n″,x); }
4.编写函数fun,函数的功能是,从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。例如,程序执行时输入字符串turbo c and borland c++,从键盘输入字符n,则输出后变为turbo c ad borlad c++。如果输入的字符在字符串中不存在,则字符串原样输出。
5.编程将从键盘输入的每个单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,用“.”结束输入。
6.从键盘输入8个数,用选择法按由大到小的顺序排列并输出,要求用指针实现。
7.从键盘输入一个字符串,编写一个函数,将此字符串中第m 个字符开始的n个字符复制成另一个字符串。
8.输入8个整数,将其中最大的数与第一个数对换,最小的数与最后一个数对换。
9.输入n个整数排序并输出,要求将排序单独写成一个函数,n个整数在主函数中输入,排序结果在主函数中输出,用指针实现。
10.输入一个字符串,内含数字和非数字字符,如gs 423cdl56 7896~?dfl2345,将其中连接的数字作为一个整数,依次存放到数组a中,例如,423放人a[0],156放人a[1],?。统计其共有多少个整数,并输出这些数。