Ⅰ 學習c語言必須要學會函數嗎
函數是C的基礎,一定要把函數學通了,我知道C語言的學習是個復雜艱辛的過程。對於沒有老師、學校環境,沒有人指導的情況下的自學更是難。
所以我想讓有經驗的人士幫我參謀建議下自學C語言的步驟,我好按部就班。下面是我搜索後自己排的一個步驟,請大家幫我斧正,謝謝!
1、最經典的:《C程序設計語言》第2版,機械工業出版社
這個是C語言的設計者和UNIX系統的設計者合作編寫的最經典的C語言教材,原書名叫《The C Programming Language》當然,這本書不太適合0起點的人,看這本書之前最好把《C程序設計》(譚浩強,清華大學)看了,老譚的書銷量突破700萬冊了,雖然比較舊了,也不太符合新標准(現在出第3版了,也還是)但是,入門還是不錯的選擇。
2、
另外還有必看的是《C Primer Plus》這個是一個美國人寫的,人民郵電出版社出了中文版了,第5版,比較厚,磚頭書,60元。但是非常適合初學的人,非常詳細。
還有《從問題到程序——程序設計與C語言引論》機械工業出版社,這本書也很不錯。
Ⅱ 簡單的C語言問題,數組翻轉
做矩陣轉置需要發現其中的規律。仔細分析之後就會知道:從最後一列開始,先輸出最下面的元素,然後依次向上輸出,該列輸出完之後,輸出前一列;知道元素全部輸出。
下面是我寫的代碼和運行的結果:
#include<stdio.h>
intmain()
{
inta[100][100],n,i,j;
printf("請輸入矩陣的維數:n=% ");
scanf("%d",&n);
printf("請輸入矩陣中的元素: ");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("矩陣轉置之後為: ");
for(j=n-1;j>=0;j--)
{
for(i=n-1;i>=0;i--)
{
printf("%d",a[i][j]);
}
printf(" ");
}
}
Ⅲ 怎樣用c語言表示 翻轉的數 比如把81 翻轉為18
用c語言表示翻轉的數可以參考下面的代碼:
#include <stdio.h>
int main()
{int C,D,S;
scanf("%d",&C);
D=(C%10)*10+C/10;
S=C+D;
printf("S=%d",S);
}
(3)c語言學翻轉函數嗎擴展閱讀:
scanf()是C語言中的一個輸入函數。
與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include <stdio.h>。
(在有一些實現中,printf函數與scanf函數在使用時可以不使用預編譯命令#include <stdio.h>。)它是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變數之中。
Ⅳ C語言:函數 reverse()是什麼
標准C中沒有reverse()函數
這是C++的一個新增函數
template<class BidirectionalIterator>
void reverse(
BidirectionalIterator _First,
BidirectionalIterator _Last
);
需要引用頭文件
#include <algorithm>
命名空間:std
Ⅳ 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語言 編寫函數實現反轉數組里的元素
#include<stdio.h>
inthanshu(inti,inta[])
{
inttemp,counter=i;
for(i=0;i<counter/2;i++)
{
temp=a[i];
a[i]=a[counter-i];
a[counter-i]=temp;
}
}
intmain()
{
inta[10],i=10;
for(i=0;i<10;i++)//<=============
scanf("%d",&a[i]);
hanshu(i,a);
for(i=0;i<10;i++)//<=============
printf(" %d",a[i]);
return0;
}
Ⅶ C語言: 寫一函數,使輸入的一個字元串按反序存放,在主函數中輸入和輸出字元串。
問題很簡單:你根本就沒有翻轉字元串!!!!
第一,你在調用char yuan(char a)後,用什麼來接受它的返回值?對吧,在主函數中根本沒有任何char組來接受它。你似乎可以將 gets(a);
後的語句改寫成 a = yuan( a ); 然後輸出。告訴你這也樣行不同的,只因為接下來的第二點。
第二,你的yuan函數設計有問題。你犯了一個初學者很容犯的錯誤試圖從被調用函數中返回一個數組(或指針)的值。要知道,被調用的函數編譯後存儲在堆棧當中:它在被調用時創建,結束調用時銷毀。所以說,不能用它來返回數組(或指針)的值。
至此,你的提問已經解決。下面給出我的想法,
現在思考你要解決的問題:將一個字元串(或者說是字元數組)翻轉。這就要求你必須為yuan函數傳遞個字元串參數a;然後就是翻轉,但是翻轉的字元串不會超出原字元串的長度,故而可設計用它自身將翻轉值帶出。可將翻轉函數原型設計為 void yuan(char *a); 實現如下:
void yuan(char *a){
char temp;
int i;
int count;
count = strlen( a ) - 1; /*這里用count表示可用的最大下標,如當數組元素為5是,可用的最大下標應為4。明白這一點很重要,也很有意思*/
for(i = 0; i < count / 2; i++){
temp = a[i];
a[i] = a[count - i];
a[count - i] = temp;
}
}
再到這里似乎沒什麼話可說了,不過還是要給出幾點建議:
第一,合理使用空白,是你的程序更具可讀性;
第二,為設計標識符可以適當學習一下英語;
綜上,在學習初期養成良好的編程風格很重要。
謹祝,
學習進步!
Ⅷ C語言 位元組 翻轉 單片機
直接左移5位就可以了
Ⅸ c語言編程 從鍵盤上輸入一個字元串通過函數調用的方法使該字元串翻轉 並輸出這個翻轉後的字元串
1 輸入字元串;
2 調用函數進行翻轉,可以通過將對稱位置字元交換值實現;
3 輸出結果。
代碼如下:
voidrevers(char*s)
{
char*p=s,c;
while(*p)p++;
p--;
while(p>s)
{
c=*p;
*p=*s;
*s=c;
}
}
intmain()
{
chars[100];
scanf("%s",s);
revers(s);
printf("%s",s);
}