C语言关于数组的问题 c语言关于数组的问题

\u5173\u4e8ec\u8bed\u8a00\u6570\u7ec4\u7684\u4e00\u4e2a\u95ee\u9898\uff1f

\u8fd9\u4e2a\u4ee3\u7801\u94fe\u63a5\u662f\u4e0d\u6539\u53d8str1\u7684\u503c\uff0c\u5728\u540e\u9762\u52a0\u4e0astr2\uff0c\u6240\u4ee5\u8981\u5148\u8d70\u4e00\u904dstr1\u7136\u540e\u5728\u9010\u4e00\u8ffd\u52a0str2
\u5982\u679c\u4f60\u4e0d\u6562\u7406\u89e3\uff0c\u53ef\u4ee5\u4e0d\u7528\u7a7a\u5faa\u73af\u3002
\u7ed9i\u8d4b\u503c\u4e3alen(str1)\uff0c\u7136\u540e\u5f00\u59cbj\u7684\u5faa\u73af\uff0c

\u8fd9\u79cd\u7a0b\u5e8f\u4e00\u822c\u7528c++\u7684\u7c7b\u5904\u7406\u4f1a\u597d\u5f88\u591a\uff0c\u8d77\u7801\u7528\u5b50\u51fd\u6570\u6765\u505a\u4e5f\u662f\u4e0d\u9519\u7684\u3002
\u5f53\u7136\uff0c\u6e90\u7801\u80fd\u5b9e\u73b0\uff0c\u5c11\u8bb8\u5730\u65b9\u7f16\u7801\u6709\u8bef\uff0c\u5df2\u6539\u6b63\uff0c\u671b\u91c7\u7eb3
#include#include#includeint a = 0;int A,B,C= 0;double info = 0;char color[1000][1000] = {0};char found[1000][1000] = {0};char stroke[1000][1000] = {0};char texture[1000][1000] = {0};char navel[1000][1000] = {0};char touch[1000][1000] = {0};char good[1000][1000] = {0};int main(void){int i; for(i = 0; ;i++){printf("\u8f93\u5165\u6572\u58f0\u5143\u7d20\u7b2c%d\u4e2a\uff0cs\u7ed3\u675f:",i+1);scanf("%s",stroke[i]);if(strcmp(stroke[i],"s") == 0){break;}}for(i = 0; ;i++){printf("\u8f93\u5165\u7eb9\u7406\u5143\u7d20\u7b2c%d\u4e2a\uff0cs\u7ed3\u675f:",i+1);scanf("%s",texture[i]);if(strcmp(texture[i],"s") == 0){break;}}for(i = 0; ;i++){printf("\u8f93\u5165\u8110\u90e8\u5143\u7d20\u7b2c%d\u4e2a\uff0cs\u7ed3\u675f:",i+1);scanf("%s",navel[i]);if(strcmp(navel[i],"s") == 0){break;}}for(i = 0; ;i++){printf("\u8f93\u5165\u89e6\u611f\u5143\u7d20\u7b2c%d\u4e2a\uff0cs\u7ed3\u675f:",i+1);scanf("%s",touch[i]);if(strcmp(touch[i],"s") == 0){break;}}for(i = 0; ;i++){printf("\u8f93\u5165\u597d\u74dc\u5143\u7d20\u7b2c%d\u4e2a\uff0cs\u7ed3\u675f:",i+1);scanf("%s",good[i]);if(strcmp(color[i],"s") == 0){break;}else a = a+1;} for(i = 0;i<=a-1;i++){ if(strcmp(good[i],"\u662f") == 0)A = A+1; elseC = C+1;} info = -(A/a)*log(A/a)/log10(2)-C/a*log10(C/a)/log10(2); }

#include <stdio.h> //载入标准输入输出库
main() //主函数,作为c程序的入口函数,从这里开始。
{
char *s,c[80]; //创建一个字符型的指针,一个字符型的数组
s=c; //将指针指向这个数组的开头。(数组名等于指向数组开头的指针)
gets(s); //从键盘获取输入到s,因为此时s指向c[],所以输入到了字符数组c中。
while((*(++s))!='\0') //将s后移一位,如果不等于'\0'进入循环
if( *s=='a') break; //如果当前s所指的位置字符为a,跳出循环
else{ s++;gets(s);} //否则s后移一位,继续获取s;
puts(s); //输出s;
}

程序分析:
此程序目的不明,好像是测试对指针和字符数组的了解,当while判断时将s后移,则s所致的位置为c[1],也就是输入串的第二位。
而在循环中判断后,将s++,然后再输入串,这时将清除原有的第二位以后的所有数据,保留原有的前两位在c[]中。
这样循环得出的结果是,每当输入单个字符时,while循环不运行,直接输出,程序结束,s值因为被自增,所以为'\0',输出为空。当输入的第二个字符为a时,结束程序因为s总是被自增到指向a或者空的位置,输出为a和后面的序列,如果是其他情况,则要求重新输入,直到输入的串的第二个字符为a,这时输出这个串从这个a开始的后面的部分。

s=c; 的意思是把数组的地址给指针s,
gets(s);的意思是给c[80]赋值。因为s等于c。gets后括号加的是地址.
while((*(++s))!='\0')中的s开始值向的是c[80]中的第0个字符.*(++s)是值向下一个字符(在第一次循环是它是c[1]的意思)
if( *s=='a') break;的意思是当字符是'a'的时候结束循环,break的意思是结束
else{ s++;gets(s);} 的意思是当c[1]不等于'a'的时候在一次对c[80]赋值
最后打印这个数组
总体意思就是得到一组字符c[80]直到当c[1]等于'a'的时候打印 注意(数组是从0开始的)
例如;输入jhhkhk的时候不打印要求你在次输入直到输入*a****的时候打印.这是我自己分析的,你可以上机验证一下.如果我错了告诉我呀,谢谢

将指针S指向数组c的头地址
接收字符,如果s指针指向的下一个元素不是结束符并且s指向的元素不是字符a,那么指针自增,接收下一个字符。
最后将字符打出来。

  • c璇█鏁扮粍闂
    绛旓細闂竴锛c璇█寮杈鏁扮粍锛屽鏋滈噷闈㈠瓨鐨勬槸鏁存暟锛岄偅涔堟病鏈夊鍒朵箣鍓嶏紝鏁扮粍涓粯璁ょ殑鍊间负闆讹紝杩樻槸涔辩爜銆傜瓟锛C璇█澹版槑鏁扮粍鍙橀噺鏃讹紝鍙垎閰嶇浉搴旂殑绌洪棿鍜屽湴鍧锛岃屼笉瀵閲岄潰瀛樻斁鐨勬暟鎹垵濮嬪寲銆備笉绠℃槸int銆乫loat銆佽繕鏄痗har鍨嬬瓑锛屽嵆閲岄潰瀛樼殑鏃犺鏄暣鏁般佸皬鏁拌繕鏄瓧绗︼紝鍐嶆病鏈夊璧嬪间箣鍓嶏紝鏁扮粍涓粯璁ょ殑鍊奸兘鏄贡鐮侊紝鑰屼笉...
  • C璇█鏁扮粍鐨勯棶棰
    绛旓細姝g‘锛屾剰鎬濇槸a[3], 鍥犱负缂栬瘧鍣ㄤ細鎶3[a]瑙i噴涓*(3+a),杩欏氨鏄痑[3]杩欎箞鍩烘湰鐨勪笢瑗块兘鑳戒贡绛:
  • c璇█鏁扮粍鐨勯棶棰
    绛旓細绗竴涓闂锛鏁扮粍data鐨勫厓绱犱釜鏁版槸2锛岀敵璇风殑鍐呭瓨绌洪棿鏄4涓猧nt 涓轰粈涔堣兘瀛樻斁4涓暟鍛紵鏄洜涓篸ata鏄嚜瀹氫箟绫诲瀷struct st鐨勬暟缁 鑰屾瘡涓涓猻truct st鐨勫疄渚嬪崰鐢2涓猧nt鐨勫唴瀛樼┖闂 鎵浠ata灏辨槸data[0].x; data[0].y; data[1].x; data[1].y;绗簩涓棶棰橈紝濡傛灉绗竴涓棶棰樼湅鏄庣櫧浜嗭紝绗簩涓棶棰樺氨濂...
  • c璇█鏁扮粍澶у皬鐨勯棶棰?
    绛旓細C璇█涓绗竴缁村ぇ灏忔槸鎸囨暟缁勭涓缁寸殑闀垮害锛氬涓嬪畾涔変竴涓竴缁存暟缁勶細int arr[10];鍒欏叾闀垮害鍙互浣跨敤sizeof(arr)鏉ユ眰寰楋細printf("闀垮害锛%d",sizeof(arr));鍏剁粨鏋滀负锛10 浜岀淮鏁扮粍鐨绗竴缁村ぇ灏忔槸鎸囨暟缁勭殑琛屾暟锛岀浜岀淮鏄暟缁勭殑鍒楁暟锛氬畾涔変竴涓簩缁存暟缁勶細int arr[5][8];鍒欏叾琛屾暟涓5锛屽垪鏁颁负8锛屽叾...
  • C璇█闂 鑻ユ湁璇存槑int a[][4]={1,2,3,4,5,6,7,8,9};,鍒鏁扮粍a绗竴缁
    绛旓細瀹氫箟鏁扮粍骞惰祴鍊兼椂C璇█瑙勫畾涓嬫爣鏄繖鏍风殑锛宎[n]涓殑n涓厓绱犲簲璇ユ槸a[0]...a[n-1]銆傘傚洜姝nt a[][4]鐨勫啓娉曞氨鏄〃绀猴紝绗竴缁村ぇ灏忔病闄愬埗锛屼絾鏄浜岀淮鏁扮粍澶у皬灏辨槸4锛屼篃灏辨槸int a[][4]={{1锛2锛3锛4}锛寋5锛6锛7锛8}锛寋9锛10}}锛屾槑鏄炬槸3銆傚垎鏋愶細浜岀淮鏁扮粍鐨涓缁村ぇ灏忥紝鍗虫寚浜岀淮鏁扮粍...
  • c璇█涓涓鏁扮粍鏈夊叧鐨勯棶棰:鏁扮粍涓厓绱犵殑涓暟鏄湁鐢ㄦ埛杈撳叆鐨勪功鐨勪釜鏁板喅 ...
    绛旓細1銆佸彲浠ヤ娇鐢ㄥ姩鎬佹暟缁勩傛牴鎹敤鎴疯緭鍏ユ暟閲忥紝鍦ㄨ繍琛屽綋涓垎閰嶇浉搴旂殑鍐呭瓨銆傚姩鎬佹暟缁勶紝鏄浉瀵逛簬闈欐佹暟缁勮岃█銆傞潤鎬鏁扮粍鐨闀垮害鏄鍏堝畾涔夊ソ鐨勶紝鍦ㄦ暣涓▼搴忎腑锛屼竴鏃︾粰瀹氬ぇ灏忓悗灏辨棤娉曟敼鍙樸傝屽姩鎬佹暟缁勫垯涓嶇劧锛屽畠鍙互闅忕▼搴忛渶瑕佽岄噸鏂版寚瀹氬ぇ灏忋傚姩鎬佹暟缁勭殑鍐呭瓨绌洪棿鏄粠鍫嗭紙heap锛変笂鍒嗛厤锛堝嵆鍔ㄦ佸垎閰嶏級鐨勩傛槸閫氳繃鎵ц浠g爜...
  • 鍏充簬c璇█鏁扮粍鐨涓浜涚枒鎯?
    绛旓細鍦C璇█涓锛宎rray[10]鏈変袱绉嶅惈涔夛細鈶犲畠鎸囧惈鏈10涓厓绱犵殑鏁扮粍array锛屽锛歩nt array[10];鈶″畠鎸囨暟缁array鐨绗10鍙峰厓绱狅紝濡傦細array[10] =5;鍥犳锛屽浜庝娇鐢ㄦ暟缁刟rray[10]锛堣繖閲岋紝浣犺鎶奱rray[10]鐞嗚В鎴愬惈鏈10涓厓绱犵殑鏁扮粍array锛岃屼笉鑳界悊瑙f垚绗10鍙峰厓绱狅級鍋氬舰鍙傦紝鍙啓array[]鍗冲彲锛堝彧鍐欎竴涓┖鐨勪腑...
  • C璇█鐨勫叧浜庢暟缁勭殑涓涓皬闂
    绛旓細void main() { int a[10] = { 0 };瀹氫箟浜嗕竴涓惈鏈10涓厓绱犵殑鏁扮粍锛屽苟涓旈兘璧嬩簡鍒濆0 a[10] = 2;/*杩欎釜寮忓瓙纭畾鏄敊璇殑锛乤鏁扮粍涓苟涓嶅瓨鍦╝[10]銆備笂闈㈢殑璧嬪煎氨鏄妸鍊肩粰璧嬪埌鈥滈偦灞呪濆鍘讳簡锛屾湁娌℃湁閫犳垚鎹熷け灏辩湅杩愭皵浜嗐傝繖绉嶆儏鍐靛彨鍋氣滄暟缁勮秺鐣屼娇鐢ㄢ濓紝C缂栬瘧绯荤粺瀵规绉嶆儏鍐典笉浣滄鏌ワ紝鍏...
  • c璇█涓杈撳叆鏁扮粍鐨勯棶棰
    绛旓細}}printf锛堚%d\n鈥濓紝t锛夛紱 } 鍙互瑙傚療鍒帮紝arr[0]骞舵湭瀛樺叆瀛楃锛宼鐨勬暟鍊兼瘮棰勬湡灏1 鍘熷洜锛氳繖绉嶆儏鍐甸氬父鍙戠敓鍦ㄥ墠闈㈠凡缁忔湁浜嗚緭鍏ヨ鍙ワ紝鑰屽綋鍓嶇殑scanf鏄湪鎺ユ敹瀛楃锛堝嵆鐢%c鎺у埗杈撳叆锛夋椂銆傜敱浜庡墠闈㈢殑杈撳叆璇彞锛堜笉涓瀹氭槸scanf锛夋妸鏈鍚庤緭鍏ョ殑'\n'閬楃暀鍦ㄤ簡杈撳叆缂撳啿鍖猴紝鑰屽綋鍓嶇殑scanf锛堚%c鈥濓紝......
  • C璇█瀹氫箟鏁扮粍琛屽垪鏁鐨勯棶棰
    绛旓細鍚屽浣犲ソ锛屾垜涔熼亣鍒拌繃杩欐牱鐨勯棶棰锛屾暟缁勫畾涔夋椂锛岃鍒楁暟涓嶈兘鐢ㄥ彉閲忋 浣嗘槸锛 鎴戜滑鍙互鍔ㄦ佸垱寤轰竴涓簩缁存暟缁勩備綘鍙互杩欐牱鍋氾細锛堜互int鍨嬩负渚嬶級int **a;int m,n,i;scanf("%d%d",&m,&n); //杈撳叆浣犳娆℃兂瑕佸垱寤鏁扮粍鐨琛屾暟鍜屽垪鏁帮紝鍌ㄥ瓨鍦╩鍜宯涓 a=(int**)malloc(m*sizeof(int*)); ...
  • 扩展阅读:c#考试题库 ... c#基础练习题 ... c#面试常见问题 ... c语言基础知识100题 ... c语言数组问题讨论 ... 约瑟夫问题c语言简单 ... c语言满屏飘爱心代码 ... c#面试经典问题 ... c#笔试经典50题 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网