成教学院C上机题.docx
《成教学院C上机题.docx》由会员分享,可在线阅读,更多相关《成教学院C上机题.docx(17页珍藏版)》请在冰豆网上搜索。
![成教学院C上机题.docx](https://file1.bdocx.com/fileroot1/2022-11/26/ff119c87-e305-4d87-918b-803d1bc53bc7/ff119c87-e305-4d87-918b-803d1bc53bc71.gif)
成教学院C上机题
《C语言程序设计》上机实验题目
1-1.编程,输入n,输出如下例(n=5)所示的图形:
*****
*****
*****
*****
#include
intmain()
{
intnum;
inti,j,z;
printf("请输入整型数字:
");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
for(j=0;j<(num-i);j++)
{
printf("");
}
for(z=0;z{
printf("*");
}
printf("\n");
}
}
*****
1-2.编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形:
****
******
********
**********
#include
intmain()
{
intnum;
inti,j,z;
printf("请输入整型数字:
");
scanf("%d",&num);
for(i=1;i<=num;i++){
for(j=0;j<(num-i);j++){
printf("");
}
for(z=0;zprintf("*");
}
printf("\n");
}
}
1-3.编程,输入n,输出如下例(n=3)所示的边长为n的菱形:
*
***
*****
***
*
#include
#include
#include
intabs();
intmain()
{
intnum;
inti,j;
intcount;
printf("请输入整型数字:
");
scanf("%d",&num);
for(i=1;i<=(num*2)-1;i++){
count=0;
for(j=0;jprintf("");
count++;
}
for(j=0;j<((num*2)-1)-(count*2);j++){
printf("*");
}
printf("\n");
}
}
1-4.编程,输入顶行字符和图形的高。
输出如下例(顶行字符为'A',图形的高为5)所示的图形,
A
BCD
EFGHI
JKLMNOP
QRSTUVWXY
#include
intmain()
{
intnum;
inti,j,z;
charc;
printf("请输入高度和首字符,使用逗号区分:
");
scanf("%d,%c",&num,&c);
for(i=1;i<=num;i++){
for(j=0;j<(num-i);j++){
printf("");
}
for(z=0;z<(i*2)-1;z++){
printf("%c",c);
c++;
}
printf("\n");
}
}
1-5.编程,打印下列上三角形式的乘法九九表。
123456789
----------------------------
123456789
4681012141618
9141518212427
162024283236
2530354045
36424854
495663
8672
81
#include
intmain()
{
inti,j,z;
for(i=1;i<=9;i++){
printf("%3d",i);
}
printf("\n");
for(i=1;i<=29;i++){
printf("-");
}
printf("\n");
for(i=1;i<=9;i++){
z=1;
while(i>z){
printf("");
z++;
}
for(j=i;j<=9;j++){
printf("%3d",i*j);
}
printf("\n");
}
}
2-1.编程,输出200以内(含200)所有完全平方数C(满足C2=A2+B2)及其个数。
#include
intmain()
{
inti,j,z;
intcount=0;
for(i=1;i<=200;i++){
for(j=1;j<=200;j++){
for(z=1;z<=200;z++){
if((i*i)==(z*z)+(j*j))
{
printf("(%d*%d)=(%d*%d)+(%d*%d)\n",i,i,j,j,z,z);
count++;
}
}
}
}
printf("一共有%d个完全平方数\n",count);
printf("去掉重复的话有%d个完全平方数\n",count/2);
}
2-2.中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?
编程,输出所有可能的购买方案。
#include
intmain()
{
inti,j,z;
intsum=100;
intmoney=100;
for(i=0;i<=sum;i++){
for(j=0;j<=sum;j++){
for(z=0;z<=sum;z++){
if(((i*5)+(j*3)+(z/3)==money)&&(z%3==0)&&(i+j+z==sum))
{
printf("鸡瓮%d只,鸡母%d只,鸡雏%d只\n",i,j,z);
}
}
}
}
}
2-3.设N是一个四位数,它的9倍恰好是其反序数(例如:
123的反序数是321),编程,输出所有满足条件的N。
#include
intmain()
{
inti;
intnum,new_num;
for(i=1000;i<=9999/9;i++){
num=i*9;
new_num=(num/1000)+(num/100%10*10)+(num/10%10*100)+(num%10*1000);
if(i==new_num){
printf("%d,%d\n",i,num);
}
}
}
2-4.编程,求全部水仙花数。
所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。
如:
153=13+53+33
#include
intmain()
{
inti;
intbai,shi,ge;
intsum;
for(i=100;i<=999;i++){
bai=i/100;
shi=i/10%10;
ge=i%10;
sum=bai*bai*bai+shi*shi*shi+ge*ge*ge;
if(i==sum){
printf("水仙花数为%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",i,bai,bai,bai,shi,shi,shi,ge,ge,ge);
}
}
}
2-5.编程,输出555555的约数中最大的三位数。
#include
intmain()
{
inti=555555;
intj=9999;
while(i%j!
=0){
j--;
}
printf("555555的约数中最大的三位数是:
%d\n",j);
}
2-6.编程,输出1000到100000之间所有满足下列条件的所有整数及其个数:
整数的各位数字之和等于5。
#include
intmain()
{
inti,j;
intsum;
inttemp;
inttotal=0;
for(i=1000;i<=1000000;i++){
j=i;
sum=0;
while
(1){
temp=j%10;
sum+=temp;
j=j/10;
if(j==0){
break;
}
}
if(sum==5){
printf("整数的个位数之和等于5的数字是%d\n",i);
total++;
}
}
printf("一共%d个符合条件的数\n",total);
}
2-7.如果一个数恰好等于它的因子之和,则称该数为“完全数”。
如:
6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。
编程,输出1000以内的全部“完全数”。
#include
intmain()
{
inti;
intj=1;
intsum=0;
for(i=1;i<1000;i++)
{
while(i>j)
{
if(i%j==0){
sum=sum+j;
}
j++;
}
if(sum==i){
printf("完全数是%d\n",i);
}
j=1;
sum=0;
}
}
3-1.编程,输入10个整数,然后进行查找。
输入要查找的整数,若找到,则输出该数在数组中的下标位置,否则输出“cannotfound!
”。
.#include
intmain()
{
intnumber[10],inum;
inti,flag=0;
for(i=0;i<10;i++)
{
printf("请输入第%d个整数:
",i+1);
scanf("%d",&number[i]);
}
printf("请输入要查找的数:
");
scanf("%d",&inum);
for(i=0;i<9;i++)
{
if(number[i]==inum)
{
flag=1;
break;
}
}
if(flag==0){
printf("cannotfound!
");
}else{
printf("下标是%d",i+1);
}
}
3-2.编程,输入一个字符串并删除其中的指定字符。
例如,对于字符串abcdcf,指定删除c,则结果为:
abdf。
#include
#include
intmain()
{
charc[100];
chard;
inti;
printf("请输入小于100字节的字符串:
");
gets(c);
printf("请输入要删除的字符:
");
d=getchar();
for(i=0;c[i]!
='\0';i++)
{
if(c[i]!
=d)
{
printf("%c",c[i]);
}
}
printf("\n");
}
3-3.编程,输入一行字符,将其反序后再输出。
#include
#include
intmain()
{
charc[100];
intcount;
inti;
printf("请输入小于100字节的字符串:
");
gets(c);
count=(int)strlen(c);
printf("反序后的字符串是:
");
for(i=count-1;i>=0;i--){
printf("%c",c[i]);
}
printf("\n");
}
3-4.编程,输入一行字符,将其中的每个字符从小到大排列后输出。
#include
#include
intmain()
{
charc[100];
unsignedlongcount;
inti,j,temp;
printf("请输入小于100字节的字符串:
");
gets(c);
count=strlen(c);
for(i=0;ifor(j=i+1;jif(c[i]>c[j]){
temp=c[i];
c[i]=c[j];
c[j]=temp;
}
}
}
printf("从小到大排序的结果为:
%s\n",c);
}
3-5.编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。
#include
#include
intmain()
{
charc1[100],c2[50];
unsignedlongcount;
inti,j,temp;
printf("请输入第一个小于50字节的字符串:
");
gets(c1);
printf("请输入第二个小于50字节的字符串:
");
gets(c2);
strcat(c1,c2);
count=strlen(c1);
for(i=0;ifor(j=i+1;jif(c1[i]>c1[j]){
temp=c1[i];
c1[i]=c1[j];
c1[j]=temp;
}
}
}
printf("从小到大排序的结果为:
%s\n",c1);
}
3-6.编程,输入一行文字,判断该行文字是否是回文。
例如,读入:
MADAMIMADAM输出:
YES
读入:
ABCDBA.输出:
NO
#include
#include
intmain()
{
charc[100];
unsignedlongcount;
inti,flag=0;
printf("请输入第一个小于100字节的字符串:
");
gets(c);
count=strlen(c);
for(i=0;iif(c[i]!
=c[count-1]){
flag=1;
break;
}
}
if(flag==1){
printf("NO\n");
}else{
printf("YES\n");
}
}
3-7.编程,输入若干个字符串,当输入字符串的长度为0时停止输入。
输出最长的字符串。
#include
#include
intmain()
{
charc1[100],c2[100];
inti=1;
printf("请输入第%d个小于100字节的字符串:
",i);
gets(c1);
if(strlen(c1)!
=0){
while(1==1){
++i;
printf("请输入第%d个小于100字节的字符串:
",i);
gets(c2);
if(strlen(c2)!
=0){
if(strlen(c2)>strlen(c1)){
strcpy(c1,c2);
}
}
else{
printf("最长的字符串是%s\n",c1);
break;
}
}
}else{
printf("您没有输入任何字符串\n");
}
}
3-8.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include
#include
intmain()
{
charc[100];
inti=0,count=0,flag=0;
printf("请输入小于100字节的字符串:
");
gets(c);
for(i=0;iif(c[i]==''){
flag=0;
}elseif(flag==0){
flag=1;
count++;
}
}
printf("一共有%d个单词\n",count);
}