首页IT科技计算机二级考试C语言程序设计题常考(计算机等级考试二级C语言程序设计专项训练题——程序设计题(四))

计算机二级考试C语言程序设计题常考(计算机等级考试二级C语言程序设计专项训练题——程序设计题(四))

时间2025-08-02 01:06:02分类IT科技浏览5595
导读:31、请编写函数void fun(char xx[] ,函数的功能是:将字符串数组xx中下标为奇数的字符按其ASCII值从大到小的顺序进行排序。...

31               、请编写函数void fun(char xx[])              ,函数的功能是:将字符串数组xx中下标为奇数的字符按其ASCII值从大到小的顺序进行排序               。

例如:源字符串为:abcdefgh                       ,则处理后字符串为:ahcfedgb                    。

void fun(char xx[]) { int i,j,k; char ch; i=strlen(xx); for(j=1;j<i-2;j=j+2) for(k=j+2;k<i;k=k+2) if (xx[j]<xx[k]) { ch=xx[j]; xx[j]=xx[k];xx[k]=ch; } }

参考程序

32                    、请编写函数void fun(char xx[])      ,其功能是:从字符串xx中间一分为二          ,左边部分按字符的ASCII值降序排序                        ,右边部分按字符的ASCII值升序排序        。如果原字符串长度为奇数          ,则最中间的字符不参加排序      ,字符仍放在原位置上            。

例如:若源字符串为:abcdhgfe                       ,则处理后字符串为:dcbaefgh                    。若源字符串为:123498765              ,则处理后字符串为:432195678            。

#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int i,j,k,half; char ch; i=strlen(xx); half=i/2; for(j=0;j<half-1;j++) for(k=j+1;k<half;k++) if(xx[j]<xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } if (i%2) half++; for (j=half;j<i-1;j++) for (k=j+1;k<i;k++) if (xx[j]>xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } }

参考程序

33        、请编写函数void fun(char xx[])   ,其功能是:从字符串xx中间一分为二                      ,左边部分按字符的ASCII值降序排序                  ,排序后左边部分与右边部分进行交换        。如果原字符串长度为奇数,则最中间的字符不参加处理                  ,字符仍放在原位置上                    。

例如:若源字符串为:abcdhgfe                      ,则处理后字符串为:hgfedcba               。 若源字符串为:123498765   ,则处理后字符串为:876594321    。

#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int i,j,k,half; char ch; i=strlen(xx); half=i/2; for(j=0;j<half-1;j++) for(k=j+1;k<half;k++) if(xx[j]<xx[k]) { ch=xx[j];xx[j]=xx[k];xx[k]=ch; } for (j=half-1,k=i-1;j>=0;j--,k--) { ch=xx[j]; xx[j]=xx[k]; xx[k]=ch; } }

参考程序

34            、编写一个函数fun(char *str,char *substr)              ,该函数统计一个长度为2的子字符串在另一个字符串中出现的次数                     。

例如                       ,若字符串str为"asd asasdfg asd as zx67 asd mklo"      ,子字符串为"as"          ,则函数返回值是6                  。

#include <stdio.h> #include <string.h> int fun(char *str,char *substr) { } int main() { char str[81], substr[3] ; int n ; printf("输入原字符串:") ; gets(str) ; printf("输入子字符串:") ; gets(substr) ; n=fun(str, substr) ; printf("n=%d\n", n) ; return 0; }
int fun(char *str,char *substr) { int n=0; char *p , *r; while (*str) { p=str; r=substr; while(*r) if (*r==*p) {r++; p++; } else break; if (*r==\0) n++; str++; } return n; }

参考程序

35                    、请编写函数void fun(char xx[])                        ,函数的功能是:将字符串数组xx中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号          ,将标点符号均转换为空格)仍重新存入字符串数组xx中                  。

例如:源字符串为:I am a student      ,则处理后字符串为:student a am I                     。

特别说明:若源字符串末尾有一个标点                       ,则转换后的字符串开头有一个空格    。

#include <stdio.h> #include <string.h> void fun(char xx[]) { } int main() { char xx[81]; printf("Enter a string : "); gets(xx); printf("The original string is : "); puts(xx); fun(xx); printf("The string after modified : "); puts(xx); return 0; }
void fun(char xx[]) { int len,i,j,k,s; char str[81]; len=strlen(xx); s=k=0; for (i=len-1;i>=0;i--) // 从当前字符串尾部开始向前倒序循环,实现单词倒排 { if((xx[i]>=A && xx[i]<=Z)|| (xx[i]>=a && xx[i]<=z)) k++; // 如果当前字符是字母a~z或A~Z              ,则k加1 else // 否则将长度为k的单词顺序存入到字符串数组str中 { for(j=1;j<=k;j++) str[s++]=xx[i+j]; k=0; // 将k值清0   ,以方便下一个单词的长度计数 } if(!((xx[i]>=A && xx[i]<=Z)|| (xx[i]>=a && xx[i]<=z))) str[s++]=; // 如果当前字符不是字母a~z或A~Z,则以空格代之存入到字符串数组str中 } for(j=1;j<=k;j++) // 此时的k值为当前字符串中第一个单词的长度,但在上一个for循环中没能存入到字符串数组str中,所以在这里将其存入到str中 str[s++]=xx[i+j]; str[s]=\0; strcpy(xx,str); // 将倒排好的当前字符串重新存回到xx中 }

参考程序1

void fun(char xx[]) { int i,len; char str[81]={0}; len=strlen(xx); for (i=len-1;i>=0;i--) if(!((xx[i]>=A && xx[i]<=Z)|| (xx[i]>=a && xx[i]<=z))) { strcat(str,xx+i+1); strcat(str," "); xx[i]=\0; } strcat(str,xx); strcpy(xx,str); }

参考程序2

声明:本站所有文章                      ,如无特殊说明或标注                  ,均为本站原创发布               。任何个人或组织,在未征得本站同意时                  ,禁止复制            、盗用        、采集                    、发布本站内容到任何网站               、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益                      ,可联系我们进行处理        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
js list转jsonArray(TreeUtils工具类一行代码实现列表转树 实战Java8 三级菜单 三级分类 附视频) ctce_cfg.exe(ctsvccda.exe是什么进程?ctsvccda.exe是病毒吗?)