西南交大上机考试必备c语言题目+源程序代码精心总结.docx

上传人:b****5 文档编号:6484510 上传时间:2023-01-06 格式:DOCX 页数:28 大小:21.64KB
下载 相关 举报
西南交大上机考试必备c语言题目+源程序代码精心总结.docx_第1页
第1页 / 共28页
西南交大上机考试必备c语言题目+源程序代码精心总结.docx_第2页
第2页 / 共28页
西南交大上机考试必备c语言题目+源程序代码精心总结.docx_第3页
第3页 / 共28页
西南交大上机考试必备c语言题目+源程序代码精心总结.docx_第4页
第4页 / 共28页
西南交大上机考试必备c语言题目+源程序代码精心总结.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

西南交大上机考试必备c语言题目+源程序代码精心总结.docx

《西南交大上机考试必备c语言题目+源程序代码精心总结.docx》由会员分享,可在线阅读,更多相关《西南交大上机考试必备c语言题目+源程序代码精心总结.docx(28页珍藏版)》请在冰豆网上搜索。

西南交大上机考试必备c语言题目+源程序代码精心总结.docx

西南交大上机考试必备c语言题目+源程序代码精心总结

1.用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一项的绝对值小于10-6为止

#include

#include

voidmain()

{ints;

floatn,t,pi;

t=1;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);

}

2.求Fibonacci数列前40个数

#include

voidmain()

{

longintf1,f2;

inti;

f1=1;f2=1;

for(i=1;i<=20;i++)

{printf("%12ld%12ld",f1,f2);

if(i%2==0)printf("\n");

f1=f1+f2;

f2=f2+f1;

}

}

3.删除字符串中的数字字符,以‘#’作为字符串的结束标志

#include

#include

fun(char*p)

{

chara[100];

inti,j,k;

for(i=0,j=0;*(p+i)!

='#';i++)

{

if(*(p+i)<'0'||*(p+i)>'9')/*(((s1[i]>='a')&&(s1[i]<='z'))||((s1[i]>='A')&&(s1[i]<='Z')))*/

{

a[j++]=*(p+i);

k=j;

}

}

a[k]='\0';

strcpy(p,a);

}

voidmain()

{

chars1[100];

printf("请输入随意字符:

\n");

gets(s1);

fun(s1);

puts(s1);

printf("\n");

}

4.输出10000—20000之间个位数是7的素数个数,并将其中最大的素数返回。

#include

#include

voidmain()

{

inti,j,n,word=0,max;

for(i=10000;i<=20000;i++)

{

if(i%10==7)

{

n=sqrt(i);

for(j=2;j<=n;j++)

{

if(i%j==0)

break;

}

if(j>=n+1)

{

word=word+1;

max=i;

}

}

}

printf("这样的素数有%d个,其中最大的一个是%d.\n",word,max);

}

5.统计输入英文字母的个数

#include

voidfun(char*tt,intpp[])

{

inti;

for(i=0;i<26;i++)

pp[i]=0;

for(;*tt!

='\0';tt++)

(pp[*tt-97])++;

}

voidmain()

{

charaa[1000];

intbb[26],k;

printf("\npleaseenteracharstring:

\n");

scanf("%s",aa);

fun(aa,bb);

for(k=0;k<26;k++)

printf("%d",bb[k]);

printf("\n");

}

6.矩阵主对角线元素平方之和

#include

intfun(intx[3][3],inty)

{

inti,j,k;

y=0;

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

if(i==j)

k=x[i][j]*x[i][j];

y=y+k;

}

return(y);

}

voidmain()

{

inti,j;

inta[3][3],n;

printf("请输入一个3*3矩阵:

\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

scanf("%d",&a[i][j]);

printf("%4d",a[i][j]);

}

printf("\n");

}

n=fun(a,n);

printf("对角线平方和为:

%d\n",n);

}

7.字符串倒序

#include

#include

voidfun(char*s,char*t)

{

inti,k;

ints1=strlen(s);

/*

for(i=0;i<=s1;i++)

{

*(t+i)=*(s+i);

k=i;必须在循环体内赋值

}

*/

strcpy(t,s);

for(k=s1;k<=2*s1-1;k++)

t[k]=s[2*s1-1-k];

t[2*s1]='\0';

}

voidmain()

{chars[100],t[100];

printf("\nPleaseenterstrings:

");scanf("%s",s);

fun(s,t);

printf("Theresultis:

%s\n",t);

}

 

8.将字符串中的字母变成其后的字母,其中z变成a,Z变成A

程序如下:

#include

#include

voidmain()

{

voidfun(chara[100],charb[100]);

printf("\n请输入一个字符串:

\n");

charstr[100];charp[100];

gets(str);

fun(str,p);

puts(p);

}

voidfun(chara[100],charb[100])

{

inti,k;

for(i=0;*(a+i)!

='!

';i++)

{

if((*(a+i)>='a'&&*(a+i)<='z')||(*(a+i)>='A'&&*(a+i)<='Z'))

{

if(*(a+i)=='z')

*(a+i)='a';

elseif(*(a+i)=='Z')

*(a+i)='A';

else

*(a+i)=*(a+i)+1;

}

}

*(a+i)='\0';

strcpy(b,a);

}

9.非零整数的最大公约数

#include

voidmain()

{

inti,a,b,c,t;

printf("请输入两个非零正整数:

\n");

scanf("%d,%d",&a,&b);

printf("\n");

c=a>b?

a:

b;

for(i=1;i<=c;i++)

if((a%i==0)&&(b%i==0))

t=i;

printf("最大公约数为:

\n");

printf("%d\n",t);

}

10.根据以下公式求π(要求满足精度0.0005)的近似值:

π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))

#include

voidmain()

{

floati,k,n,t;

floatpi,sum=1;

for(i=1,k=1,t=1;;i++)

{

if(k/t<0.00000005)

break;

k=k*i;

t=t*(2*i+1);

sum=sum+k/t;

}

pi=sum*2;

printf("π的值为:

%f\n",pi);

}

11.将两个两位数的正整数a,b合并形成一个整数放在c中,合并的方式如:

当a=45,b=12时,调用该函数后,c=4152

#include

voidfun(inta,intb,long*c)

{

*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);

}

main()

{inta,b;

longc;

printf("Inputab:

");scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%d\n",c);

}

 

12.初试矩阵加上转置矩阵

#include

voidmain()

{

inta[3][3]={{1,1,1},{2,2,2,},{3,3,3}};

intb[3][3],c[3][3];

inti,j,t;

printf("初试矩阵为:

\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%3d",a[i][j]);

printf("\n");

}

printf("\n");

printf("转置后的矩阵为:

\n");

for(i=0;i<3;i++)

for(j=i;j<3;j++)

{

t=a[j][i];

b[j][i]=a[i][j];

b[i][j]=t;

}

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%3d",b[i][j]);

printf("\n");

}

printf("\n");

printf("初试矩阵加上转置矩阵后的矩阵为:

\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

{

c[i][j]=a[i][j]+b[i][j];

printf("%3d",c[i][j]);

}

printf("\n");

}

printf("\n");

}

13.从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。

高位仍在高位,低位仍在低位。

如当s中的数为:

7654321时,t中的数为7531

#include

voidfun(longs,long*t)

{

longi,k,n=10;

k=s%10;

for(i=0;i

{

s=s/100;

k=(s%10)*n+k;

n=n*10;

}

*t=k;

}

main()

{longs,t;

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

 

14.冒泡法选择法

#include

/*起泡法

voidfun(intn,int*a)

{

inti,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[j+1])

{

t=a[j+1];

a[j+1]=a[j];

a[j]=t;

}

}*/

/*选择法*/

voidfun(intn,int*a)

{

inti,j,t;

for(i=0;i

for(j=i+1;j

if(*(a+j)<*(a+i))

{

t=*(a+j);

*(a+j)=*(a+i);

*(a+i)=t;

}

}

voidputarr(intn,int*z)

{inti;

for(i=1;i<=n;i++,z++)

{printf("%4d",*z);

if(i%10==0)printf("\n");

}printf("\n");

}

main()

{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;

printf("\nBeforesorting%dnumbers:

\n",n);putarr(n,aa);

fun(n,aa);

printf("\nAftersorting%dnumbers:

\n",n);putarr(n,aa);

}

15.将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。

如当s中的数为87653142时,t中的数为8642

#include

voidfun(longs,long*t)

{

longk=1,n,j;

for(*t=0,j=1;s>0;)

{

n=s%10;

if(n%2==0)

{

*t=*t+n*k;

k=k*10;

}

s=s-n;/*出错在此处,写成了s=s-n*j;s=s/j;j=j*10*/

s=s/10;/*或者直接写成s=s/10;*/

}

}

main()

{longs,t;

printf("\nPleaseenters:

");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:

%ld\n",t);

}

16.将字符串中除了下标为偶数同时asc值也为偶数的字符外,其余全部删除。

#include

#include

voidfun(char*s,chart[])

{

intk,i,j;

k=strlen(s);

for(i=0,j=0;i

{

if(i%2==0&&s[i]%2==0)

{

t[j]=s[i];

j++;

}

}

t[j]='\0';

}

main()

{

chars[100],t[100];

printf("\nPleaseenterstringS:

");scanf("%s",s);

fun(s,t);

printf("\nTheresultis:

%s\n",t);

}

 

17.计算正整数num各位数字之积

#include

longfun(longnum)

{

inti,k,t=1;

while(num>0)

{

k=num%10;

t=t*k;

num=num/10;

}

return(t);

}

main()

{longn;

printf("\nPleaseenteranumber:

");scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

18.将字符串中的字符按逆序输出

#include

voidfun(chara[])

{

inti,n,t;

chark;

for(i=0;a[i]!

='\0';i++)

n=i+1;

t=n/2-1;

for(i=0;i<=t;i++)

{

k=a[n-i-1];

a[n-i-1]=a[i];

a[i]=k;

}

}

main()

{chars[10]="abcdefghi";

printf("处理前字符串=%s\n处理后字符串=",s);

fun(s);

printf("%s\n",s);

}

 

19.比较两个字符串的长度(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。

若两个字符串长度相同,则返回第一个字符串。

#include

#include

/*第一种方法

char*fun(charx[],chary[])

{

inti,m,n;

for(i=0,m=0;x[i]!

='\0';i++)

m++;

for(i=0,n=0;y[i]!

='\0';i++)

n++;

if(m>=n)

return(x);

else

return(y);

}

*/

/*第二种不同的方法,但都需要定义*fun函数,定义此函数,返回值可用指针代替字符数组名。

第二种不同的方法*/

char*fun(char*x,char*y)

{

inti,m,n;

char*p;

for(i=0,m=0;*(x+i)!

='\0';i++)

m++;

for(i=0,n=0;*(y+i)!

='\0';i++)

n++;

if(m>=n)

p=x;

else

p=y;

return(p);

}

 

/*第三种方法

*****************************************************

voidfun(charx[],chary[],charz[])

{

inti,m,n;

for(i=0,m=0;x[i]!

='\0';i++)

m++;

for(i=0,n=0;y[i]!

='\0';i++)

n++;

if(m>=n)

{

for(i=0;i<=m;i++)

z[i]=x[i];

}

else

for(i=0;i<=n;i++)

z[i]=y[i];

}

main()

{chara[20],b[20],c[20];

inti,m,n;

printf("Input1thstring:

");

gets(a);

printf("Input2thstring:

");

gets(b);

printf("Thelargerstringis:

");

fun(a,b,c);

printf("%s\n",c);

}

*******************************************************

第三种方法*/

main()

{chara[20],b[20];

printf("Input1thstring:

");

gets(a);

printf("Input2thstring:

");

gets(b);

printf("Thelargerstringis:

");

printf("%s\n",fun(a,b));

}

20.删除字符串中的所有空白字符(包括制表符,回车符和换行符)

#include

#include

main()

{

voidfun(char*P);

charc,s[80];

inti=0;

printf("Inputastring:

");

c=getchar();

while(c!

='#')

{s[i]=c;i++;c=getchar();}

s[i]='\0';

fun(s);

puts(s);

}

voidfun(char*p)

{inti,t;

chara[80];

for(i=0,t=0;*(p+i)!

='#';i++)

if((*(p+i)!

=32)&&(*(p+i)!

=10)&&(*(p+i)!

=9))/*TAB的asc码制是9,换行符的asc码制是10,空格符的asc码制是32*/

a[t++]=*(p+i);

a[t]='\0';

strcpy(p,a);

}

 

21.当字符串中的内容为:

“abcdabfabcdx”,t中的内容为:

“ab”时,输出结果应是:

abcdx

当字符串中的内容为:

“abcdabfabcdx”,t中的内容为:

“abd”时,则程序输出:

notbefound!

#include

#include

char*fun(char*s,char*t)

{

char*p,*r,*a=0;

while(*s)

{

p=s;r=t;

while(*r)

{

if(*p==*r)

{p++;r++;}

elsebreak;

}

if(*r=='\0')

a=s;

s++;

}

return(a);

}

main()

{

chars[100],t[100],*p;

printf("\nPleaseenterstringS:

");

scanf("%s",s);

printf("\nPleaseentersubstringt:

");

scanf("%s",t);

p=fun(s,t);

if(p)

printf("\nTheresultis:

%s\n",p);

else

printf("\nNotfound!

\n");

}

22.当s所指字符串的内容为:

“abcdabfab”,t1所指子串中的内容为:

“ab”,t2所指子串的内容为:

“99”时,结果在w所指的数组中的内容应为:

“99cd99f99”

#include

#include

voidfun(char*s,char*t1,char*t2,char*w)

/*

{

char*p,*q,*n;

strcpy(w,s);

while(*w)

{

p=w;q=t1;

while(*q)

{

if(*p==*q)

{p++;q++;}

elsebreak;/*此else语句相当重要,不可缺少。

若缺少,程序无法正常执行

}

if(*q=='\0')

{

p=w;q=t2;

while(*q)

{*p=*q;p++;q++;}

}

w++;

}

}

*/***********************************

{

char

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1