20道上机考题和答案(2)

2019-08-31 17:17

} }

8. 函数void fun(int x,char * p)实现十进制整数x到二进制的转换。转换后的二

进制数以字符串的方式放置于p所指向的数组中。如输入13,输出1101,输入-13,输出-1101。 #include \#include

void fun(int x,char *p) { int i,k=x; char s[80]; for(i=0; ;i++)

{if(x%2==0) s[i]='0'; else s[i]='1'; x/=2;

if(x==0) break; }

if(k<0) *(p+0)='-'; for( ;i>=0;i--,p++) if(k<0) *(p+1)=s[i]; else *p=s[i]; if(i==-1)

{if(k<0) *(p+1)='\\0'; else *p='\\0'; } }

void main() {int a;

char c[18];

scanf(\ fun(a,c);

printf(\}

9. 编写函数int fun(char (*ss)[N],int m,char *s),功能是:形参ss指向一个

m行N列的二维字符数组,每行存放一个字符串。求出最大的字符串,复制到s所指的字符数组中,然后返回此最大字符串的长度。 #define N 30

#include

int fun(char (*ss)[N],int m,char *s)

6

{ int i;

s=strcpy(s,*(ss+0)); for (i=0;i

if(strcmp(*(ss+i),s)>0) strcpy(s,*(ss+i)); return(strlen(s)); }

void main()

{char a[8][N],b[N]; int i,len;

for(i=0;i<8;i++) gets(a[i]); len=fun(a,8,b);

printf(\ }

10. 给定程序中,函数void fun(char *s)的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5*adh3*kjsdf7*。 #include #include #include void fun(char *s) { int i,j; char a[100];

for(i=0,j=0;*(s+i)!='\\0';i++,j++) {a[j]=*(s+i);

if(*(s+i)>='0'&&*(s+i)<='9') {*(a+j+1)='*';j++;} }

a[j]='\\0'; strcpy(s,a); }

void main() {char str[80]; gets(str); fun(str); puts(str); }

11.给定程序中,函数void fun(char *s)的功能是:把形参s所指字符串中下标为

7

偶数的字符右移到下一个偶数位置,最右边被移出字符串的字符绕回放到第一个偶数位置,下标为奇数的字符不动(注:字符串的长度大于等于2)。例:若输入:abcd123,输出:3badc21

#include void fun(char *s) { }

void main() {char str[80]; gets(str); fun(str); puts(str); }

12.编写函数void fun(char *s1,char *s2),功能是:对形参s1所指字符串升序排

序,并将排序后下标为偶数的字符取出,写入形参s2所指字符数组中,形成一个新串。例如,下面程序若输入:The C Programming Language,输出:□□LTaegghmnor。(□表空格) #include

void fun(char *s1,char *s2) { int i,j,k,n=0;char t;

for(i=0;*(s1+i)!=0;i++) n+=1; for(i=0;i

for(j=i+1;j

for(i=0,j=0;i

{ if(i%2==0) {s2[j]=s1[i];j++;} }

s2[j]=0; }

void main()

{char a[80],b[80]; gets(a); fun(a,b); puts(b); }

13.函数void fun(char s[])的功能是:将s所指字符串中ASCII值为奇数的字符删

除。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中字符A的ASCII

8

码值为奇数、?、字符1的ASCII码值也为奇数、?都应当删除,其它依此类推。最后s中内容是:“BDF24”。 #include void fun(char s[]) { int i,j;

for(i=0;s[i]!='\\0';i++) if(s[i]%2!=0)

{for(j=i;s[j]!='\\0';j++) s[j]=s[j+1]; i--; } }

void main() {char a[80]; gets(a); fun(a); puts(a); }

14.请编写一个函数int fun(long int x),它的功能是:判断整数x是否是同构数。

若是同构数,函数返回1;否则返回0。所谓“同构数”是指这样的数,它出现在它的平方数的右边。例如:输入整数5,5的平方数是25,5是25中右侧的数,所以5是同构数,输出\。要求x的值不大于10000。 #include int fun(long int x) { long m,a;

for(a=10; ;a*=10) {m=x*x%a;

if(x==m) return(1); if(x*x/a==0) return(0); } }

void main() {int x;

scanf(\ if(fun(x)==1) puts(\ else puts(\}

15.编写取子字符串函数void fun(char s1[],char s2[],int m,int n),其作用是将

9

字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入\、4,3时应输出\;当我们输入\、4,6时应输出\。注意,这里是将1作为起始计数。 #include

void fun(char s1[],char s2[],int m,int n) { int i,a,b; a=strlen(s2);

b=(a

void main()

{static char a[100],b[100]; int s,len;

void fun(char s1[],char s2[],int m,int n); puts(\ gets(a);

puts(\ scanf(\ fun(b,a,s,len);

printf(\}

16. 编写函数void fun(char *str),将参数字符串中各单词首字母变大写,其余字

母变小写。输入输出在main中实现。如输入\输出\。单词以空格、逗号、句号分隔。 #include void fun(char *str) { int i;

if(*(str+0)>='a'&&*(str+0)<='z') *(str+0)=*(str+0)-32;

for(i=1;*(str+i)!='\\0';i++)

{if(*(str+i-1)==' '||*(str+i-1)==','||*(str+i-1)=='.') {if(*(str+i)>='a'&&*(str+i)<='z') *(str+i)=*(str+i)-32; }

else if(*(str+i)>='A'&&*(str+i)<='Z') *(str+i)=*(str+i)+32; }

10


20道上机考题和答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:兰州石化公司ABS树脂研究开发历程 - 张传贤

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: