第4个回答 2009-08-09
1、 编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后第三个字母代替该字母,若为其它字符时不变。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char str[1024];
int i=0;
printf("请输入一串字符:");
scanf("%s",str);
while(str[i]!='\0')
{
if((str[i]>='a'&&str[i]<='w')||(str[i]>='A'&&str[i]<='W'))
str[i]+=3;
else if((str[i]>='x'&&str[i]<='z')||(str[i]>='X'&&str[i]<='Z'))
str[i]=str[i]-26+3;
i++;
}
printf("加密后的字符串为%s\n",str);
}
2、 编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void main()
{
int inter;
int R;
char result[100];
int temp1,temp2;
int i;
int flag;
printf("请输入一个十进制整数:");
scanf("%d",&inter);
printf("请输入需要转换的进制数(2-16之间):");
scanf("%d",&R);
if(R<2||R>16)
{
printf("输入数据错误");
exit(0);
}
if(inter<0)
{
inter=-inter;
flag=1;
}
temp1=inter;
for(i=0;temp1!=0;i++)
{
temp2=temp1%R;
if(temp2>=10)
result[i]='A'+temp2-10;
else
result[i]='0'+temp2;
temp1=temp1/R;
}
if(flag==1)
printf("-");
for(i=i-1;i>=0;i--)
printf("%c",result[i]);
printf("\n");
}
3、 从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
void main()
{
int money[9]={10000,5000,1000,500,200,100,10,5,1};
float temp;
int data;
int result[9];
int i;
printf("请输入一金额(精确到分):");
scanf("%f",&temp);
if(temp<0)
{
printf("输入金额小于0,错误");
exit(0);
}
data=temp*100;
for(i=0;i<9;i++)
{
result[i]=data/money[i];
data=data%money[i];
if(i==6)
printf("%d角%d张;",money[i]/10,result[i]);
else if(i>6)
printf("%d分%d张;",money[i],result[i]);
else
printf("%d元%d张;",money[i]/100,result[i]);
}
}
4、 随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void)
{
int i;
int inter[20];
int max,min,value,sum=0;
srand(time(0));
for(i=0;i<20;i++)
{
inter[i]=1+(int)(50.0*rand()/(RAND_MAX+10.0));
printf("%d ",inter[i]);
}
max=min=inter[0];
for(i=0;i<20;i++)
{
if(max<inter[i])
max=inter[i];
if(min>inter[i])
min=inter[i];
sum+=inter[i];
}
value=sum/20;
printf("最大值是%d,最小值是%d,平均值是%d,各元素之和是%d\n",max,min,value,sum);
}
5、 编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
char str[]={"ASEEsdffw WEsdfe joiejorjerojeojr ASOJGWOEJIOJERJJ wejr"};
int len=0;
int temp;
int point;
int i=0;
while(str[i]!='\0')
{
temp=0;
while(str[i]!=' '&&str[i]!='\0')
{
temp++;
i++;
}
if(len<temp)
{
len=temp;
point=i-len;
}
if(str[i]=='\0')
break;
else
i++;
}
while(str[point]!=' '&&str[point]!='\0')
{
printf("%c",str[point]);
point++;
}
printf("\n");
}
6、 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
void main()
{
int num[5]={0,0,0,0,0};
int temp;
int i,j;
char str[]={"ABCD0"};
srand(time(0));
for(i=0;i<100;i++)
{
temp=1+(int)(5.0*rand()/(RAND_MAX+1.0));
printf("%d ",temp);
switch(temp)
{
case 1:
num[0]++;
break;
case 2:
num[1]++;
break;
case 3:
num[2]++;
break;
case 4:
num[3]++;
break;
case 5:
num[4]++;
break;
}
}
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
if(num[i]<num[j])
{
temp=num[j];
num[j]=num[i];
num[i]=temp;
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
printf("\n编号为%c,得票数为%d",str[i],num[i]);
}
}
7、任何一个自然数m的立方均可写成m个连续奇数之和。例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
编程实现:输入一自然数n,求组成n3的n个连续奇数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int num;
int i;
int first;
int n;
printf("输入一个自然数:");
scanf("%d",&n);
if(n<0)
{
printf("输入数据有错误");
exit(0);
}
num=0;
for(i=1;i<n;i++)
num+=i;
first=num*2+1;
printf("组成%d的立方的%d个连续奇数为:",n,n);
for(i=0;i<n;i++)
printf("%d ",first+2*i);
}
8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a,b,c;
int temp;
for(a=1;a<10;a++)
{
for(b=0;b<10;b++)
for(c=1;c<10;c++)
if((temp=a*100+b*10+c+c*100+b*10+a)==1333)
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
}
9、编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
char ch;
float a,b,result;
printf("请输入两个数和操作符(例如46+78):");
scanf("%f%c%f",&a,&ch,&b);
switch(ch)
{
case '+':result=a+b;break;
case '-':result=a-b;break;
case '*':result=a*b;break;
case '/':result=a/b;break;
default:printf("输入操作符错误");exit(0);
}
printf("运算结果为%.2f\n",result);
}
10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。
如输入:56439,输出:5位数
5,6,4,3,9
9,3,4,6,5
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void main()
{
int n=0;
int inter;
int ys;
int num[5];
int i;
printf("请输入一个5位以内的正整数:");
)scanf("%d",&inter);
if(inter<=0||inter>99999)
{
printf("输入错误");
exit(0);
}
for(i=0;i<5;i++)
{
if(inter/int(pow(10,4-i))!=0)
break;
}
n=5-i; //位数
printf("%d位数\n",n);
ys=inter; //余数
for(i=0;i<n;i++)
{
num[i]=ys/int(pow(10,n-i-1));
ys=ys%int(pow(10,n-i-1));
}
for(i=0;i<n;i++)
printf("%d ",num[i]);
printf("\n");
for(i=n-1;i>=0;i--)
printf("%d ",num[i]);
}
LZ是要题呢吧。。。。本回答被提问者采纳