| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1951 人关注过本帖
标题:[求助]C语言两题考试题目 十万火急
只看楼主 加入收藏
wincent918
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-21
收藏
得分:0 
菜鸟 我编译过 不行啊
只是数字在变
2007-06-21 15:17
wulai111222
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-12-14
收藏
得分:0 
a[81]=gets()这句溢出 你char a[81],这里你取的是地数组的82项
2007-06-21 15:21
wincent918
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-21
收藏
得分:0 
是字符串 如ABDC 1314@N
那样的数字1314 需要各数字+2后再取模
可以分三组讨论
字母一组
数字一组
其它一组
还有空格
2007-06-21 16:07
zhao9302
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-5-10
收藏
得分:0 

那是不是那里改成a[0]就可以过?还是改什么?


我要一步一步往上爬……
2007-06-21 16:21
hb2137
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-6-12
收藏
得分:0 
#include<stdio.h>
#include<ctype.h>


void main()
{
int count=0;
char c,h[100],s[100];
printf("%s\n","Enter a line of text:");
while((c=getchar())!='\n')
{
s[count++]=c;
}
s[count]='\0';
puts(s);

int n=0;
for(int i=0;i<=count;i++)
{
int j=0;
if((s[i]>=65)&&(s[i]<=90)) j=1;
if((s[i]>=97)&&(s[i]<=122)) j=2;
if((s[i]>=48)&&(s[i]<=55)) j=3;
if((s[i]==56)||(s[i]==57)) j=4;
if(isspace(s[i])) j=5;

switch(j)
{
case 1:
h[i-n]=s[i]-4;break;
case 2:
h[i-n]=s[i]-4;break;
case 3:
h[i-n]=s[i]+2;break;
case 4:
h[i-n]=s[i]-8;break;
case 5:
n++;break;
default:
h[i-n]=s[i];break;
}
}
h[i-n-1]='\0';
puts(h);



return ;
}



成功了

2007-06-21 16:26
wincent918
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-21
收藏
得分:0 

谢谢 不过还有小小问题想问题想问
如果字母小写a 会不会出现其它字符?这方面需要考虑吗?

2007-06-21 16:32
hb2137
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-6-12
收藏
得分:0 
题目是你出的呀, 鬼小得....

2007-06-21 16:37
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 

#include "stdio.h"
#include "ctype.h"
main()
{
char str[80],a[80]={0};
int i=1,j=0,b;

scanf("%c\0",&str[0]);
while(scanf("%c\0",&str[i])&&str[i++]!='\n');

i=0;

while(str[i]!='\n'){
if(isalpha(str[i]))
{
for(b=0;b<4;b++)
if(str[i]==('a'+b)) {a[j]='z'-b;break;}
if(str[i]!=('a'+b))
a[j]=str[i]-4;
}
if(isdigit(str[i])) a[j]=((str[i]-48+2)%10)+48;
b=j;
j++;

if(isspace(str[i])) j=b;

i++;
}
printf("%s\n",a);
getch();
}
这下可以了,以前那个空格多了就错了,这个可以的哦,另外红色的是a--z,循环改过的,中午走太急忘了那个字母循环了,

[此贴子已经被作者于2007-6-21 19:15:13编辑过]


偶是菜鸟鸟偶惧WHO?!!!!
2007-06-21 19:10
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 

还有楼上那位大哥的好像不行的,wintc,tc2.0都不通过的,,我改了下但是不对。
而且运行结果错误......
#include<stdio.h>
#include<ctype.h>


void main()
{
int count=0,n,i;/*要知道在tc里同等级定义变量是不能由执行过语句分开的,你怎么能够说对呢?!!!*/
char c,h[100],s[100];
printf("%s\n","Enter a line of text:");
while((c=getchar())!='\n')
{
s[count++]=c;
}
s[count]='\0';
puts(s);

n=0;
for(i=0;
i<=count;i++)
{
int j=0;
if((s[i]>=65)&&(s[i]<=90)) j=1;
if((s[i]>=97)&&(s[i]<=122)) j=2;
if((s[i]>=48)&&(s[i]<=55)) j=3;
if((s[i]==56)||(s[i]==57)) j=4;
if(isspace(s[i])) j=5;

switch(j)
{
case 1:
h[i-n]=s[i]-4;break;
case 2:
h[i-n]=s[i]-4;break;
case 3:
h[i-n]=s[i]+2;break;
case 4:
h[i-n]=s[i]-8;break;
case 5:
n++;break;
default:
h[i-n]=s[i];break;
}
}
h[i-n-1]='\0';
puts(h);



return ;
}


[此贴子已经被作者于2007-6-21 19:51:59编辑过]


偶是菜鸟鸟偶惧WHO?!!!!
2007-06-21 19:28
殇雪
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-21
收藏
得分:0 
.
图片附件: 游客没有浏览图片的权限,请 登录注册


2007-06-21 20:54
快速回复:[求助]C语言两题考试题目 十万火急
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019305 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved