C語言字符串筆試題
C語言字符串筆試題
C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程序設計語言。下面就由學習啦小編為大家介紹一下C語言字符串筆試題的文章,歡迎閱讀。
C語言字符串筆試題篇1
對一個字符串重新排列,字母排在前面,數(shù)字排在后面,并不改變原來字母之間以及數(shù)字之間的字符順序。
[cpp] view plain copy print?
#include
#include
#include
#define N 30
/***********************************************
*函數(shù)名稱: fun
*創(chuàng)建時間: 2010.12.5
*描 述: 對一個字符串重新排列,字母排在前面,數(shù)字排在后面,并不改變原來字母之間以及數(shù)字之間的字符順序。
*參 數(shù): char * s,int *m
*返 回 值: chLetter(數(shù)組chLetter[]的首元素地址)
*局部變量: char chLetter[N];
* char chNumber[N];
* int i,j,k;
************************************************/
char * fun(char * s,int *m) //參數(shù)m是通過調(diào)試才想到的
{
char chLetter[N]; //用來存放字母
char chNumber[N]; //用來存放數(shù)字
int i,j,k;
i=0; //初始化
j=0; //j用來記錄字母的個數(shù)
k=0; //k用來記錄數(shù)字的個數(shù)
for (i=0; i
{
if (s[i] >= 'A' && s[i] <= 'Z' //將字母存入chLetter[]
|| s[i] >= 'a' && s[i] <= 'z')
{
chLetter[j]=s[i];
j++;
}
if (s[i] >= '0' && s[i] <='9') //將數(shù)字存入chNumber[]
{
chNumber[k]=s[i];
k++;
}
}
chLetter[j]='';
chNumber[k]='';
*m=j+k; //用來返回最后輸入和輸出時字符的個數(shù)
strcat(chLetter,chNumber);
return chLetter;
}
//主函數(shù)
void main()
{
char s[N];
int i;
int m;
char *p;
p=NULL;
printf("請輸入字符串(30字符以內(nèi)):n");
scanf("%s",s);
p=fun(s,&m); //剛開始沒定義出這個m來現(xiàn)限制指針p所指數(shù)組的長度就出現(xiàn)了后面兩個字符亂碼
for (i=0; i
{
s[i]=p[i];
}
printf("結果為:");
for (i=0; i
{
printf("%c",s[i]);
}
printf("n");
}
C語言字符串筆試題篇2
將s所指字符串中最后一次出現(xiàn)的與t1所指字符串相同的子串替換為t2所指字符串。
[cpp] view plain copy print?
#include
#include
#include
#define N 30 //s所指字符串的最大長度
#define T 2 //t1和t2所指字符串的長度
/***********************************************
*函數(shù)名稱: fun
*創(chuàng)建時間: 2010.12.5
*描 述: 將s所指字符串中最后一次出現(xiàn)的與t1所指字符串相同的子串替換為t2所指字符串
*參 數(shù): char * s,char * t1, char * t2,int *m
*返 回 值: w(數(shù)組w[]的首元素地址)
*局部變量: char w[N];
* char temp[T];
* char t1temp[T];
* int i,j,k,l;
************************************************/
char * fun(char * s,char * t1, char * t2,int *m) //m的作用和第一題一樣,沒m最后兩個字符會亂碼(想尋求其他方法)
{
char w[N]; //用來存放處理后的字符串
char temp[T]; //用來存放從s所指字符串中截取的子串
char t1temp[T]; //用來存放t1所指字符串
int i,j,k,l;
//向t1temp中存入t1所指字符串
for (i=0; i
{
t1temp[i]=t1[i];
}
t1temp[T]='';
//求m所指的值
for (i=0;i
{
if (s[i]=='')
{
*m=i;
}
}
//尋找相同時的最后一個字符的下標
for (i=0; i
{
l=0;
for (j=i; j<(i+T); j++,l++) //截取長度為T的子串存到temp[]中
{
temp[l]=s[j];
}
temp[T]='';
if (strcmp(t1temp,temp) == 0)
{
k=i; //k記錄相同時的最后一個字符的下標
}
}
for (i=0; i
{
j=0;
if (i>=k && i<(k+T)) //在找到的k點處開始換值
{
w[i]=t2[j]; //換值
j++;
}
else
{
w[i]=s[i];
}
}
return w;
}
//主函數(shù)
void main()
{
char s[N];
char t1[T];
char t2[T];
int i;
int m;
char *p;
p=NULL;
printf("請輸入字符串(20字符以內(nèi)):");
scanf("%s",s);
printf("請輸入將要被替換的子字符串(僅限兩個字符):");
scanf("%s",t1);
printf("請輸入將要用來替換的字字符串(僅限兩個字符):");
scanf("%s",t2);
p=fun(s,t1,t2,&m);
for (i=0; i
{
s[i]=p[i];
}
printf("結果為:");
for (i=0; i
{
printf("%c",s[i]);
}
printf("n");
}
C語言字符串筆試題篇3
將s所指的字符串中ASCII值為奇數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。
[cpp] view plain copy print?
#include
#include
#include
#define N 30
/***********************************************
*函數(shù)名稱: fun
*創(chuàng)建時間: 2010.12.6
*描 述: 將s所指的字符串中ASCII值為奇數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。
*參 數(shù): char * s,int * m
*返 回 值: return t,(t為指向數(shù)組的指針)
*局部變量: char * t;
* char temp[N];
* int i,j=0;
************************************************/
char * fun(char * s,int * m)
{
char * t;
char temp[N]; //臨時的數(shù)組,用來存放t所指的數(shù)組
int i,j=0;
t=temp;
for (i=0; i
{
if (s[i]%2==0 )
{
temp[j]=s[i]; //如果是偶數(shù),賦值給t所指的數(shù)組
j++;
if (s[i]=='') //找到m的值先要找出輸入了多少個字符
{
break;
}
}
}
*m=j; //找到m的值即輸出結果的長度
t[j]='';
return t;
}
//主函數(shù)
void main()
{
char s[N];
int i;
int m;
char *p;
p=NULL;
printf("請輸入字符串(30字符以內(nèi)):n");
scanf("%s",s);
p=fun(s,&m); //剛開始沒定義出這個m來現(xiàn)限制指針p所指數(shù)組的長度就出現(xiàn)了后面兩個字符亂碼
for (i=0; i
{
s[i]=p[i];
}
printf("結果為:");
for (i=0; i
{
printf("%c",s[i]);
}
printf("n");
}