❶ 一道c語言編程:利用指針作函數參數,將從鍵盤輸入的字元串逆序存放,並輸出。我的答案運行之後沒有結果
完全按照你的意願
改的
問題1:你用指針pt傳遞數組a,但是在fun函數里,卻沒有使用該指針反而新建局部數組a;
問題2:fun函數里,定義的b數組,你是指定下標賦值的,缺少結束符『\0』,如果字元未滿,那麼輸出時無法判斷字元串結束符,這里我用memset函數把b每一個字元都初始成『\0』,你也可以在循環賦值結束後,在b最後一個字元後面再賦一個字元『\0』.注意定義字元數組,如希望放10個字元,建議定義11大小蔽租埋,因為要留1個『\0』
問題3:你的賦值循環for(i=0;i<10;i++),直接寫的宏螞上限10,如果輸入小於10字元。那麼就會取到空值。這里我用strlen函數讀取了a的字元長度作為上限
#include<stdio.h>
#include<string.h>
int main()
{
void fun(char *pt);
char a[10],*pt;
pt=a;
gets(a);
fun(pt);
puts(a);
return 0;
}
void fun(char *pt)
{
char b[10];int i;
memset(b,'型凱\0',sizeof(char)*10);
for(i=0;i<strlen(pt);i++)
b[strlen(pt)-1-i]=pt[i];
strcpy(pt,b);
}
❷ C語言編程,寫一個函數,使輸入的一個字元串按反序存放,在主函數中輸入和輸出字元
#include <stdio.h>
#include <string.h>
void input(char st[]);//定義輸入函數
void reverse(char st[]);//定義反序函數
int main()
{
char s[20];
input(s);//調用輸入函數
printf("Original string: %s ", s);//輸出原字元串
reverse(s);//調用反序函數
printf("New string: %s ", s);//輸出反序後的字元串
return 0;
}
void input(char st[])
{
printf("Please enter string: ");
gets(st);
}
//反序函數
void reverse(char st[])
{
int n=strlen(st);
for (int i=0, j=n-1, t; i<(n/2); t=st[i], st[i]=st[j], st[j]=t, i++, j--);
}
❸ c語言程序 輸入一字元串存入數組中,逆序存放並輸出
對鍵盤輸入的字元串進行逆序,逆序後的字元串仍然保留在原來的字元數組中,最後輸出。(不得調用任何字元串處理函數),例如:
輸入
hello
world
輸出
dlrow
olleh
(3)c語言指針逆序存放字元串擴展閱讀:
字元串在存儲上類喊槐似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要圓仿條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。
❹ C語言編程:用指針接收鍵盤輸入的字元串並逆序輸出到屏幕(串長度小於100),怎麼做
代碼文本:
#include "stdio.h"
int main(int argc,char *argv[]){
char s[100],*p;
printf("Please enter a string... ");
scanf("%99s",s);//輸入字元串
for(p=s;*p!='