當前位置:首頁 » 編程語言 » c語言字元串編程題

c語言字元串編程題

發布時間: 2022-05-26 00:03:15

c語言字元數組編程

思路:按題意,用指針遍歷字元串st,使用標識變數flag首次遇到字母置1並計數,遇到空格時flag重置0。

注意:本程序不考慮夾雜非字母的情況,請規范輸入。比如「I am a stu**dent」,stu**dent將作為一個單詞識別。

下面是代碼:

#include <stdio.h>

int GetWordNum(char st[])

{

char *p=st;

int cnt=0,flag=0;

while(*p)

{

if(flag==0 && ((*p>='a' && *p<='z') || (*p>='A' && *p<='Z')))

cnt++,flag=1;

if(flag && *p==' ')

flag=0;

p++;

}

return cnt;

}

int main()

{

char str[]="I am a student";

printf("%s共計單詞個數%d ",str,GetWordNum(str));

return 0;

}

⑵ c語言編程題 輸入一字元串,判斷該字元串是否為迴文。

#include <stdio.h>

#include<stdlib.h>

int main()

{

char a[100];

int i=0,j=0;

printf("請輸入字元串: ");

gets(a);

while(a[i]!='')

i++;

i--;

for(;j<=i;i--,j++)

{

if(a[i]!=a[j])

{

break;

}

}

if(j<=i)

{

printf("不是迴文串 ",a);

}

else

{

printf("是迴文串 ",a);

}

system("pause");

return 0;

}

運行效果:

(2)c語言字元串編程題擴展閱讀:

return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。

return語句用來結束循環,或返回一個函數的值。

1、return 0,說明程序正常退出,返回到主程序繼續往下執行。

2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。

⑶ c語言字元數組和字元串編程題 求解

分析一下,首先第一個是字元串中的字元排序,字元怎麼比較大小呢?那肯定想到了對應的ascii碼呀,
那麼就轉換成一個數字排序的問題了,
比如58261,排序,設置一個最頭位置和最尾位置變數a,b
第一個數字存入a,然後後面輸入的與他比較,比他小的就替換a,比完之後就可以確定第一個最小的數字了,
那麼按這個邏輯來處理就可以每次都得到最小的一個數字了,那就把這個邏輯定義成一個方法
把輸入的字元串定義成一個數組,【bcfsj】然後把數組中每個成員都當成這個方法的參數進一遍邏輯,最後把return出來的值放到數組中

⑷ C語言字元串編程題目

#include "stdio.h"
#include "string.h"

#define N 6 //數組長度

void sort(char *language[]);
void output(char *language[]);

int main()
{
char *language[]={"PASCAL","BASIC","C/C++","Fortran","Turbo C","JAVA"};
sort(language);
output(language);
return 0;
}

void sort(char *language[])
{
//選擇排序
for(int i=0;i<N;++i)
{
for(int j=i+1;j<N;++j)
{
if(strcmp(language[i],language[j])>0)
{
//交換
char *temp=language[i];
language[i]=language[j];
language[j]=temp;
}
}
}
}

void output(char *language[])
{
for(int i=0;i<6;++i)
printf("%s\n",language[i]);
}

⑸ C語言編程題,輸入5個字元串,然後排序

#define LINEMAX 20/*定義字元串的最大長度*/

int main()

{int i;

char**p,*pstr[5],str[5][LINEMAX];

for(i=0;i&lt;5;i++)

pstr&lt;i&gt;=str&lt;i&gt;;/*將第i個字元串的首地址賦予指針數組pstr的第i個元素*/

printf("input 5 strings: ");

for(i=0;i&lt;5;i++)

scanf("%s",pstr&lt;i&gt;);

p=pstr;

sort(p);

printf("strings sorted: ");

for(i=0;i&lt;5;i++)

printf("%s ",pstr&lt;i&gt;);

}

sort(char**p)/*冒泡法對5個字元串排序函數*/

{int i,j;

char*temp;

for(i=0;i&lt;5;i++)

{for(j=i+1;j&lt;5;j++)

{if(strcmp(*(p+i),*(p+j))&gt;0)/*比較後交換字元串地址*/

{temp=*(p+i);

*(p+i)=*(p+j);

*(p+j)=temp;

}

}

}

return 0;

}

(5)c語言字元串編程題擴展閱讀:

printf()函數的調用格式為:printf("&lt;格式化字元串&gt;",&lt;參量表&gt;)。

其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。

比如:

int a=1234;

printf("a=%d ",a);

輸出結果為a=1234。

scanf()是C語言中的一個輸入函數。與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include&lt;stdio.h&gt;。

int scanf(const char*restrict format,...);

函數scanf()是從標准輸入流stdin(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。

如:

scanf("%d%d",&a,&b);

函數返回值為int型,如果a和b都被成功讀入,那麼scanf的返回值就是2。

⑹ C語言中一個關於「字元串」的編程題。

#include
void fun(char *s)
{ int i, n, k; char c;
n=0;
for(i=0; s[i]!='\0'; i++) n++;
/**********found**********/
if(n%2==0) k=n-___1___ ;
else k=n-2;
/**********found**********/
c=___2___ ;
for(i=k-2; i>=1; i=i-2) s[i+2]=s[i];
/**********found**********/
s[1]=___3___ ;
}
main()
{ char s[80]="abcdefgh";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

自己填空吧

⑺ C語言編程題:從鍵盤輸入一串字元,統計其中的數字與字母個數並輸出

#include<stdio.h>
int
main()
{
char
a[100];
char
b[24];
int
s[100]
=
{
0
};//用於存儲字元的個數
gets(a);//輸入字元
//開始比較
for
(int
x
=
0;
x
<
24;
x++)
{
int
c
=
0;//記錄每個字元個數
b[x]
=
x
+
97;//為了讓b[0]是a,b[1]是b依次類推
for
(int
i
=
0;
i
<
100;
i++)
{
if
(b[x]
==
a[i])
{
++c;
s[x]
=
c;
}
}
if
(s[x]>=1)//只輸出輸入中有的字母
的個數
{
printf("%c
%d\n",
b[x],
s[x]);
}
}
getchar();
return
0;
}
(7)c語言字元串編程題擴展閱讀:
gets()用法:
gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到回車結束,但回車符
不屬於這個字元串。其調用格式為:
gets(s);
其中s為字元串變數(字元串數組名或字元串指針)。
gets(s)函數與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)
函數輸入字元串時存在一個問題,就是如果輸入了空格會認為輸入字元串結束,
空格後的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元
串直到回車為止。
示例:
#include<stdio.h>
int
main()
{
char
s[20];
printf("What's
your
name?\n");
gets(s);
printf("%s\n",s);
return
0;
}
當輸入a
bde回車的時候,會輸出a
bde。

⑻ C語言編程題: 輸入10個字元串,將其從大到小排序後輸出。

#include<stdio.h>

void swap1(int *p,int n){

int temp;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(p[i]>p[j]){

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

void swap2(int *p,int n){

int temp;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(p[i]<p[j]){

temp=p[i];

p[i]=p[j];

p[j]=temp;

}

}

int main(){

char n;int a[15];

while(~scanf("%c",&n)){

for(int i=0;i<10;i++){

scanf("%d",&a[i]);

}

getchar();

if(n=='A') swap1(a,10);

else swap2(a,10);

for(int i=0;i<10;i++){

if(i==0)printf("%d",a[i]);

else printf(" %d",a[i]);

}

printf(" ");

}

}

運行效果:

(8)c語言字元串編程題擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md--&gt;m域寬,列印出來以後,在控制台上,顯示m位;

如果我們要列印的數的位數如果超過我們設定m則原樣輸出;

如果我們要列印的數的位數如果小於我們設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

⑼ 求一個關於字元串的c語言編程題目,謝謝

#include<stdio.h>
#include<stdlib.h>

intmain()
{
charstr[1000];
gets(str);//默認輸入中沒有換行,按行輸入所有字元
inti,j,max;
for(i=0;i<strlen(str);++i){
if(str[i]>='0'&&str[i]<='9'){//讀到一個數字後就假設其後還有數字並尋找最大的數值,存入max,直到數字結束
max=str[i++]-'0';
while(1){
if(str[i]>='0'&&str[i]<='9'&&i<strlen(str)){
max=(str[i]-'0')>max?(str[i]-'0'):max;
i++;
}
else
break;
}
while(1){//數字結束後從後一個字元開始找大寫字母
if(i<strlen(str)){//防止數組越界
if(str[i]>='A'&&str[i]<='Z'){//找到大寫字母後開始輸出
printf("%c",str[i++]);
for(j=1;j<max;++j){//輸出字元數大於max或遇到其它字元時停止,並換行
if(str[i]>='a'&&str[i]<='z'){
printf("%c",str[i++]);
}
else{
printf(" ");
break;
}
}
if(j==max)printf(" ");
}
elseif(str[i]>='0'&&str[i]<='9')
break;
else
i++;
}
else
break;
}
}
}
return0;
}


也不是完全理解你的意思,但至少樣例能跑出來。這段代碼建立在這樣的基礎上:

(1) 輸入的字元串沒有換行符;

(2) 發現一個大寫字母後輸出的是它之後的從a~z的字母,不包含其它。


你可以根據你的意思跑點例子,發現問題再告訴我,可以改,有問題可追問。

⑽ C語言有關字元串的編程題

int frequency(const char *str, char c)
{
int count = 0;
char *p = str;
while (*p != '\0')
{
if (*p++ == c)
count++;
}
return count;
}
void main()
{
char *str = "addccdeddsa";
printf("%d\n", frequency(str, 'd'));
}

熱點內容
思鄉腳本 發布:2025-02-12 23:43:32 瀏覽:439
java的job 發布:2025-02-12 23:38:43 瀏覽:892
我的世界伺服器授權指令 發布:2025-02-12 23:30:13 瀏覽:596
電腦伺服器號在哪裡找 發布:2025-02-12 23:22:29 瀏覽:12
linux查看系統是32位 發布:2025-02-12 23:17:29 瀏覽:989
從資料庫中隨機取資料庫數據 發布:2025-02-12 23:17:25 瀏覽:878
ftp下載軟體安卓 發布:2025-02-12 23:07:24 瀏覽:567
c搜索演算法 發布:2025-02-12 23:05:47 瀏覽:862
返回伺服器地址 發布:2025-02-12 23:05:45 瀏覽:181
我的世界推薦在線伺服器 發布:2025-02-12 23:00:18 瀏覽:462