开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
计算机二级C语言程序设计题
题目:
函数fun()功能:将s所指字符串中ASCII值为奇数的字符删去,s所指串中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为:“ABCDEFG12345”,其中,字符A的ASCII码值为奇数、...、字符串1的ASCII码值也为奇数、...因此必须删除,其它依此类推。最后t所指的数组中的内容应是:“BDF24”。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char *s, char t[])
{
}
main()
{
char s[100], t[100];
void NONO ();
printf("\nPlease enter string s:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is:%s\n", t);
NONO();
system("pause");
}
void NONO ()
{/* 本函数用于打开文件,输入数据,
调用函数,输出数据,关闭文件。 */
char s[100], t[100];
FILE *rf, *wf;
int i;
rf=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0; i<8; i++)
{
fscanf(rf, "%s", s);
fun(s, t);
fprintf(wf, "%s\n", t);
}
fclose(rf);
fclose(wf);
}
题目分析:
将字符串中ASCII值为奇数的字符删去就是遍历字符串,如果当前下标对2取余不为且当下标对应的字符的AC码值对2取余为0,则什么也不做,反之将当符合条件的字符添加到结果数组中。主函数main():定义字符数组s和t,控制台给值,最终结果保存在数组中.
解题思路:
首先获得字符串的长度,利用长度控制循环,在循环中使用if判断语句对每一个字符的ASCII值得奇偶进行判断,如果是偶数,则将次字符复制到指定字符串中,最后以“\0”作为字符串结尾。
参考答案如下:
int i,j=0,n;
n=strlen(s);
for(i=0; i<n; i++)/*找出ASCII码值为偶数的字符依次存入数组中*/
{
if(s[i]%2==0)
{
t[j]=s[i];
j++;
}
}
t[j]='\0';
效果如下:
补充:
ASCII码值如下:空格的ASCII码值为32;数字0到9的ASCII码值分别为48到57;大写字母“A”到“Z”的ASCII码值分别为65到90;小写字母“a”到“z”的ASCII码值分别为97到到122。