【题目81】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int a,i,aa[4],t;
printf("请输入四位数字: ");
scanf("%d",&a);
aa[0]=a%10;
aa[1]=a%100/10;
aa[2]=a%1000/100;
aa[3]=a/1000;
for(i=0;i<=3;i++)
{
aa[i]+=5;
aa[i]%=10;
}
for(i=0;i<=3/2;i++)
{
t=aa[i];
aa[i]=aa[3-i];
aa[3-i]=t;
}
printf("加密后的数字: ");
for(i=3;i>=0;i--)
printf("%d",aa[i]);
printf("\n");
return 0;
}
【题目82】
题目:计算字符串中子串出现的次数 。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
int i,j,k,TLen,PLen,count=0;
char T[50],P[10];
printf("请输入两个字符串,以回车隔开,母串在前,子串在后:\n");
gets(T);
gets(P);
TLen=strlen(T);
PLen=strlen(P);
for(i=0;i<=TLen-PLen;i++)
{
for(j=0,k=i;j<PLen&&P[j]==T[k];j++,k++)
;
if(j==PLen)count++;
}
printf("%d\n",count);
system("pause");
return 0;
}
【题目83】
题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
FILE *fp=NULL;
char filename[25],ch;
printf("输入你要保存到的文件的名称: \n");
gets(filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("error: cannot open file!\n");
exit(0);
}
printf("现在你可以输入你要保存的一些字符,以#结束: \n");
getchar();
while((ch=getchar())!='#')
{
fputc(ch,fp);
}
fclose(fp);
system("pause");
return 0;
}
【题目84】
题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 输入的字符串以!结束。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
FILE *fp=NULL;
char str[50];
int i,len;
printf("输入一个字符串: \n");
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]<='z'&&str[i]>='a')
str[i]-=32;
}
if((fp=fopen("test","w"))==NULL)
{
printf("error: cannot open file!\n");
exit(0);
}
fprintf(fp,"%s",str);
fclose(fp);
system("pause");
return 0;
}
【题目85】
题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
1.题目分析:前提:需要建立A.txt与B.txt。
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
FILE*fa,*fb,*fc;
int i,j,k;
char str[100],str1[100];
char tem;
if((fa=fopen("A.txt","r"))==NULL) //A.txt文件需要存在
{
printf("error: cannot open A file!\n");
exit(0);
}
fgets(str,99,fa);
fclose(fa);
if((fb=fopen("B.txt","r"))==NULL) //B.txt文件需要存在
{
printf("error: cannot open B file!\n");
exit(0);
}
fgets(str1,100,fb);
fclose(fb);
strcat(str,str1);
for(i=strlen(str)-1;i>1;i--)
for(j=0;j<i;j++)
if(str[j]>str[j+1])
{
tem=str[j];
str[j]=str[j+1];
str[j+1]=tem;
}
if((fc=fopen("C.txt","w"))==NULL) // 合并为 C.txt
{
printf("error: cannot open C file!\n");
exit(0);
}
fputs(str,fc);
fclose(fc);
system("pause");
return 0;
}
【题目86】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#include "stdlib.h"
typedef struct{
int ID;
int math;
int English;
int C;
int avargrade;
char name[20];
}Stu;
int main()
{
FILE*fp;
Stu stu[5];
int i,avargrade=0;
printf("请输入5个同学的信息:学生号,姓名,3门成绩:\n");
for(i=0;i<5;i++)
{
scanf("%d %s %d %d %d",&(stu[i].ID),stu[i].name,&(stu[i].math),&(stu[i].English),&(stu[i].C));
stu[i].avargrade=(stu[i].math+stu[i].English+stu[i].C)/3;
}
if((fp=fopen("stud","w"))==NULL)
{
printf("error :cannot open file!\n");
exit(0);
}
for(i=0;i<5;i++)
fprintf(fp,"%d %s %d %d %d %d\n",stu[i].ID,stu[i].name,stu[i].math,stu[i].English,
stu[i].C,stu[i].avargrade);
fclose(fp); // ==system("pause");
return 0;
}
【题目87】
题目:我国古代数学家在《算经》中有一道题:"鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?“意为:公鸡每只5元,母鸡每只3只,小鸡3只1元。用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?”
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
int main()
{
int x,y,z; //定义3个变量,分别表示公鸡、母鸡和小鸡的个数
for(x=0;x<=20;x++)
{
for(y=0;y<=33;y++)
{
z=100-x-y;
if(z%3==0 && x*5+y*3+z/3==100) //3种鸡一共100只
printf("公鸡: %d,母鸡: %d,小鸡: %d \n",x,y,z);
}
}
getchar();
return 0;
}
【题目88】
题目:斐波那契数列因数学家列昂纳多•斐波那契的以兔子繁殖为例子而引人,故又称为“兔子数列”。一般而言, 兔子在出生两个月后,就有繁殖能力,一对兔 子每个月能生出一对小兔子来如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#define NUM 13
int main()
{
int i;
long fib[NUM]={1,1};
for(i=2;i<NUM;i++)
{
fib[i]=fib[i-1]+fib[i-2];
}
for(i=0;i<NUM;i++)
{
printf("第%d月兔子总数:%d只 \n",i,fib[i]);
}
getchar();
return 0;
}
【题目89】
题目:母亲为儿子小Sun 4年的大学生活准备了一笔存款,方式是整存零取,规定小Sum每月月底取下一个月的生活费。现在假设银行的年利息为1.71%, 请编写程序,计算母亲最少需要存人多钱?
(小Sun大学毕业时连本带息要取1000元)
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#define FETCH 1000
#define RATE 0.0171
int main()
{
double corpus[49];
int i;
corpus[48]=(double)FETCH;
for(i=47;i>0;i--)
{
corpus[i]=(corpus[i+1]+FETCH)/(1+RATE/12);
}
for(i=48;i>0;i--)
{
printf("%d月月末本利共计:%.2f \n",i,corpus[i]);
}
getchar();
return 0;
}
【题目90】
题目:假设有一种29选7的彩票, 每注由7个1~ 29的数字组成,且这7个数字不能相同,编写程序生成所有的号码组合。
1.题目分析:
2.题目源代码如下:
#include "stdio.h"
#define MAXN 7 //设置每一注彩票的位数
#define NUM 29 //设置组成彩票的数字
int num[NUM];
int lottery[MAXN];
void combine(int n,int m)
{
int i,j;
for(i=n;i>=m;i--)
{
lottery[m-1]=num[i-1]; //保存一位数字
if(m>1)
combine(i-1,m-1);
else //若m=1,则输出一注号码
{
for(j=MAXN-1;j>=0;j--)
{
printf("%3d",lottery[j]);
}
getchar();
printf("\n");
}
}
}
int main()
{
int i,j;
for(i=0;i<NUM;i++) //设置彩票的个位数字
num[i]=i+1;
for(i=0;i<MAXN;i++)
{
lottery[i]=0;
}
combine(NUM,MAXN);
getchar();
return 0;
}