A. c語言問題解答
圖中紅色框內代碼
link p = NULL;不能初始化為NULL ,需要分配內存,不然在init裡面輸入值會奔潰。
需要改成:link p = (link)malloc(sizeof(node));
B. C語言在線答疑
幫人是不求分的,偶不同意樓上的看法。
1.m=5,n=8;是整型數據
#include<stdio.h>
main()
{
int m=5,n=8;
printf("%d%d\n",m,n);
}
2.m='a',n='B';是字元型數據
#include<stdio.h>
main()
{
char m='a',n='B';
printf("%c%c\n",m,n);
}
3.m=-43,n=278;是長整型數據
#include<stdio.h>
main()
{
long int m=-41,n=278;
printf("%d%d\n",m,n);
}
4.m=234.45,n=123.245;是實型數據
#include<stdio.h>
main()
{
float m=5,n=8;
printf("%d%d\n",m,n);
}
第二題:
#include<stdio.h>
main()
{
float gongzi,jingjin,sum;
printf("請輸入該職工的工資和獎金:");
scanf("%f,%f",&gongzi,&jiangjin);
sum=gongji+jiangjin;
printf("%.2f\n",sum);
}
C. c語言程序設計問題 在線解答
scanf("%lf",&t1);
scanf輸入時,float用%f,double輸入用%lf,不能混用。
D. C語言答疑
正確答案為 D。
數組長度為6,那索引只能是0到5,所以A錯。索引只能是整數,所以B錯。索引要用方括弧,所以C錯。
E. C語言 在線問答
v0=13,v1=4,v2=12
F. C語言程序設計問題在線解答
#include<stdio.h>
float add(int x,y); /*函數聲明*/
void main()
{int sum;
float a,b,c;
scanf("%f,%f",&a,&b); /*這里輸入的時候不要忘記了逗號,或者去掉程序里的逗號*/
c=add(a,b);
printf("sum is %f\n",c);
}
float add(folat x,float y)/*float,去掉分號*/
{
float z;
z=x+y;
return z;/*printf("z=%f",z); 返回值代替列印*/
}
G. c語言程序解答(在線等)
根據題意:
1、項目序號應為唯一值,用自增變數填充。
2、時間使用struct tm結構體(考慮如需時間運算,可使用相關函數)。
3、自定義結構類型SIINFO,分別實現插入鏈表和列印鏈表兩個功能。
4、由於這個演示程序執行完就結束程序了。所以鏈表我沒有寫free釋放內存,如你後期擴充代碼,自己寫釋放(除程序結束,malloc申請內存不會自動釋放)。
下面是演示代碼:
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#define MS 4//最大類型個數
#define MN 20//名稱最大字元長度
char stypes[MS][10]={"速度型","力量型","耐力型","對抗型"};//項目類別,自行擴展,對應修改MS常量
typedef struct SportsItemInfo//定義一個體育項目結構類型
{
int id;//項目序號,從數據結構考慮,該項不能重復,應設為自增從0開始(實際開發,這個值由資料庫分配)。
char name[MN+1];//項目名稱
int stype;//項目類(對應stypes行下標)
int n;//參賽人數
struct tm sDate;//競賽時間
struct SportsItemInfo *next;
}SIINFO;
SIINFO *insert2List(SIINFO *p_sHead);//插入新數據,首次插入參數傳NULL。參數:鏈表頭節點地址(不是首節點)。成功返回頭節點,失敗返回NULL。
void selectFList(SIINFO *p_sHead);//查詢鏈表
int main()
{
char c;
SIINFO *p_sHead=NULL,*stemp=NULL;
printf("新增體育項目: ");
while(1)
{
stemp=insert2List(p_sHead);
if(!stemp)
{
printf("ERROR! ");
return 1;
}
p_sHead=stemp;
printf("是否繼續輸入(Y/N):");
c=0;
while(c!='Y' && c!='N')scanf("%c",&c);
if(c=='N') break;
}
selectFList(p_sHead);
return 0;
}
void selectFList(SIINFO *pht)
{
int i=0;
if(pht)
{
printf(" 輸出鏈表信息: ");
while(pht->next)
{
printf("-----------項目%d--------- ",++i);
printf("項目序號:%d ",pht->next->id);
printf("項目名稱:%s ",pht->next->name);
printf("項目類別:%s ",stypes[pht->next->stype]);
printf("參賽人數:%d ",pht->next->n);
printf("參賽時間:%04d-%02d-%02d %02d:%02d:%02d ",pht->next->sDate.tm_year+1900,pht->next->sDate.tm_mon+1,pht->next->sDate.tm_mday,pht->next->sDate.tm_hour,pht->next->sDate.tm_min,pht->next->sDate.tm_sec);
printf("-------------------------- ");
pht=pht->next;
}
}
}
SIINFO *insert2List(SIINFO *p_sHead)
{
static int x=0;
static SIINFO *p_sTail=NULL;
int i;
SIINFO *p_new=NULL;
if(!p_sHead){
p_sHead=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_sHead)
return NULL;
p_sHead->next=NULL;
p_sTail=NULL;
}
p_new=(SIINFO*)malloc(sizeof(SIINFO));
if(!p_new)
return NULL;
p_new->next=NULL;
p_new->id=x++;
printf("-------------------------- ");
printf("項目名稱:"),scanf("%s",p_new->name);
for(i=0,printf("項目類(");i<MS-1;printf("%d、%s,",i,stypes[i]),i++);
printf("%d、%s):",i,stypes[i]);
p_new->stype=-1;
while(p_new->stype<0 || p_new->stype>MS-1)scanf("%d",&p_new->stype);
printf("參賽人數:"),scanf("%d",&p_new->n);
printf("參賽時間(輸入格式:年-月-日 時:分:秒):");
scanf("%d-%d-%d %d:%d:%d",&p_new->sDate.tm_year,&p_new->sDate.tm_mon,&p_new->sDate.tm_mday,&p_new->sDate.tm_hour,&p_new->sDate.tm_min,&p_new->sDate.tm_sec);
p_new->sDate.tm_mon--;//tm結構的月份是從0開始對應1月
p_new->sDate.tm_year=p_new->sDate.tm_year-1900;//tm結構的年份是實際年份-1900
if(!p_sHead->next)
p_sHead->next=p_new;
else
p_sTail->next=p_new;
p_sTail=p_new;
printf("-------------------------- ");
return p_sHead;
}
H. C語言答疑求答案謝謝
2. B
分析:
A項:第二個變數a[n][n]未賦值
C項:inta連接在一起,不能正確定義數組,且數組默認下標只能是高維下標,即a[2][]寫法錯誤,可以寫成a[][2]
D項:只對其中一部分賦值,a[2][0]和a[2][0]無賦值
3.A
A,C項char 和後面的s無空格,暫時認為是排版錯誤
分析:
A項數組後面是分號,s1不能正確定義。改成逗號才可以
4.C
%m.ns:輸出佔m列,但只取字元串中左端n個字元。這n個字元輸出在m列的右側,左補空格。
本題中未指定m,因此不會補空格,只會輸出n個字元
5.C
strlen是取字元的個數,包含空格但不包含字元串的結束符。
本題中有兩個空格和7個字元共9個
6.A
a[][4]表示每行4個元素, a[1][0]為第二行,即對應5值
I. c語言在線答疑,求高人指導~~~謝謝了~~~
第一個:你定義的是char,其表示範圍是-128到127;你的0345是八進制數,換算成十進制是229,原碼是11100101,反碼是10011010,補碼是10011011,其表示的就是-27的二進制數在計算機裡面的存儲。
第二個:((ch=getchar())=='g') ,這個條件判斷中的ch=getchar()這個表達式的值在你輸入a的時候,不等於'g',循環終止。所以是0次。
第三個:putchar(n%10+'0');n=321,n%10+'0'=』1『;if((i=n/10)!=0) printd(i)中,i=n/10 的值是32,後面遞歸調用函數本身。3次函數調用輸出的字元分別是'3','2','1'。
第四個:抱歉,你給的答案是錯誤的。輸出結果應該是abcabcabcbcabcc;原因如下:二維數組裡面存的是abc,abc,abc這9個字元。循環3次輸出分別從第一個,第五個,第九個字元輸出。
第五個:這個是函數的遞歸調用。第一次輸入a,並遞歸到下一層輸入b,再遞歸到下一層輸入#
條件符合退出遞歸,輸出當前層的c,即#,退回上一層輸出當前c,即b,再退回上一層輸出當前c,即a。這就是ab##ba。
第六個:這個是由於define中的M+M沒有加()。表達式經編譯器編譯後就是M+M*M+M*5,就是55。如果在define中加上括弧,即(M+M),表達式就是(M+M)*(M+M)*5了。
第七個:你在swap中交換的是指針的值,不是指針指向的空間的值。所以沒有交換成功。就是原來的12和15。
完了。。我真是閑的呵呵。。。。大半夜睡不著覺。。。。
J. C語言程序設計問題在線解答
您好,很高興回答您的問題。
我有從事c語言程序設計教學15年的經驗,也很願意為您解答相關問題。若您有什麼疑惑的話,可以與我聯系,必定在您解答。或者您直接把問題列出來,我看到後會回復您的。