计算机二级(C语言)有关“*”和字母的题
2017-03-23 22:43
393 查看
1、将字符串尾部的*号全部删除,前面和中间的不变。
2、除了字母前导和尾部的*号外,将他的全部删除。
3、除了字符串前导的*号外,将串中其他的全部删除。
4、使字符串的前导*号不得多于n个,如多于n个,则删除多余的;
若少于或等于n个,则不做处理。
5、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的;若少于或等于n个,则不做任何操作,字符串中间和前面的不删除。
//例如,字符串中的内容为“****A*BC*DEF*G*******”, //删除后,字符串中的内容为“****A*BC*DEF*G”; void fun(char *a){ while (*a != '\0') a++; a--; while (*a == '*') a--; //a指向最后一个字母 *(a + 1) = '\0'; } void main(){ char s[81]; int n; printf("Enter a string:\n"); cin >> s; fun(s); printf("The string after deleted : \n"); puts(s); }
2、除了字母前导和尾部的*号外,将他的全部删除。
//例如:字符串中的内容为“****A*BC*DEF*G*******”, //删除后,字符串中的内容应当是“****ABCDEFG*******”。 void fun(char *a, char *h, char *p){ int i = 0; char *q = a; //将前导*号保存到a中 while (q < h){ a[i] = *q; q++; i++; } //继续遍历数组 while (q < p){ if (*q != '*'){ //如果不是*保存到a中 a[i] = *q; i++; } q++; } //将末尾*号保存到a中 while (*q){ a[i] = *q; i++; q++; } a[i] = '\0'; } void main(){ char s[81], *t, *f; printf("Enter a string:\n"); cin >> s; t = f = s; while (*t) t++; t--; while (*t == '*'){ t--; //t指向最后一个字母 } while (*f == '*'){ f++; //f指向第一个字母 } fun(s, f, t); printf("The string after deleted : \n"); puts(s); }
3、除了字符串前导的*号外,将串中其他的全部删除。
//例如,字符串中的内容为“****A 4000 *BC*DEF*G*******”, //删除后,字符串中的内容为“****ABCDEFG”; void fun(char *a){ int i = 0; char *p = a; //把前导*号存入a中 while (*p && *p == '*'){ a[i] = *p; i++; p++; } while (*p){ if (*p != '*'){ a[i] = *p; i++; } p++; } a[i] = '\0'; } void main(){ char s[81]; int n; printf("Enter a string:\n"); cin >> s; fun(s); printf("The string after deleted : \n"); puts(s); }
4、使字符串的前导*号不得多于n个,如多于n个,则删除多余的;
若少于或等于n个,则不做处理。
//例如,字符串中的内容为“*******A*BC*DEF*G****”, //若n的值为4,删除后,字符串中的内容为“****A*BC*DEF*G****”; //若n的值为8,字符串中的内容为“*******A*BC*DEF*G****”。 void fun(char *a, int n){ int i = 0, k = 0; char *p, *t; p = t = a; while (*t == '*'){ k++; t++; //用k来统计前部*号的个数 } if (k > n){ while (*p){ a[i] = *(p + k - n); i++; p++; } a[i] = '\0'; } } void main(){ char s[81]; int n; printf("Enter a string:\n"); cin >> s; printf("Enter n: "); cin >> n; fun(s, n); printf("The string after deleted : \n"); puts(s); }
5、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的;若少于或等于n个,则不做任何操作,字符串中间和前面的不删除。
//例如:字符串中的内容为“****A*BC*DEF*G*******”, //若n的值为4,删除后,字符串中的内容为“****A*BC*DEF*G****”; //若n的值为7,字符串中的内容为“****A*BC*DEF*G*******”。 #include<stdio.h> #include<iostream> using namespace std; void fun(char *a, int n){ int i = 0, k = 0; char *p, *t; p = t = a; //将指针移动到字符串的末尾 while (*t) t++; t--; //从后往前如果是'*'则使k++,找到最后一个*所在的位置,并记录'*'的个数 while (*t == '*'){ k++; t--; //t指向最后一个字母 } if (k > n){ while (*p && p < t + n + 1){ a[i] = *p; i++; p++; } a[i] = '\0'; } } void main(){ char s[81]; int n; printf("Enter a string:\n"); cin >> s; printf("Enter n: "); cin >> n; fun(s, n); printf("The string after deleted : \n"); puts(s); }
相关文章推荐
- C语言复习知识点汇总4--计算机二级(C语言)
- 是C语言、VB、VF还是哪个 我想问一下全国计算机二级考哪个比较好
- C语言复习知识点汇总5--计算机二级(C语言)
- C语言复习知识点汇总6--计算机二级(C语言)
- 2010年3月 计算机二级等级考试C语言
- C语言复习知识点汇总7--计算机二级(C语言)
- 传给我 谁有历年全国计算机二级考试C语言的真题及答案啊
- 浙江省计算机二级(C语言)通过经验+资料
- 深入理解计算机系统学习笔记(三)之C语言常见的与存储器(内存)有关的错误
- C语言考试 计算机二级
- 我马上要去计算机C语言二级考试了 想了解下二级考试C语言的一个范围
- C语言复习知识点汇总1--计算机二级(C语言)
- C语言复习知识点汇总2--计算机二级(C语言)
- 要看什么书 全国计算机二级考试C语言类初了C语言还要考些什么
- C语言复习知识点汇总3--计算机二级(C语言)
- 计算机二级如何一次性通过?给NCRE焦躁心情降温!
- 【C语言提高23】二级指针做输出的内存模型
- C语言---计算机中小数存储
- C语言中有关二维数组的指针问题
- C语言中类型转换#大写字母转小写字母和小写字母转大写字母案例。