Ⅰ c語言求解,,,
1、
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0,n;
int ret = 1;
int sum = 0;
printf("請輸入計算的數字:");
scanf("%d",&n);
for (i = 1; i <= n; i++)
{
ret *= i;//ret=ret*i
sum += ret;//sum=sum+ret
}
printf("sum = %d\n", sum);
return 0;
}
2、
#include<stdio.h>
#include<stdlib.h>
int main()
{
int size;
printf("輸入列印數:");
scanf("%d",&size);
if(size%2==0)
size++;
if (size % 2 == 0)
{
size++;
}
for (int i = size / 2 + 1; i < size; i++)
{
for (int j = 0; j < i - size / 2 + 1; j++)
{
printf(" ");
}
for (int j = 0; j < 2 * size - 1 - 2 * i; j++)
{
printf("*");
}
printf("\n");
}
for (int i = 0; i < size / 2 + 1; i++)
{
for (int j = size / 2 + 1; j > i; j--)
{
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
}
Ⅱ c語言求解,求代碼
#include<algorithm>
#include<iostream>
#include<vector>
#include<utility>
usingnamespacestd;
typedefpair<int,pair<int,int>>item;
intabsub(inta,intb)
{
returna<b?b-a:a-b;
}
boolcmp(itema,itemb)
{
returna>b;
}
intmain()
{
intn,t;
cin>>n>>t;
vector<item>mine;
mine.resize(n*n);
intgold;
for(intx=0;x<n;x++)
{
for(inty=0;y<n;y++)
{
cin>>gold;
mine[x*n+y]=make_pair(gold,make_pair(x,y));
}
}
sort(mine.begin(),mine.end(),cmp);
intx=0,y=0,xcur,ycur,gcur,sum;
for(autoit=mine.begin();it!=mine.end();it++)
{
gcur=(*it).first;
xcur=(*it).second.first;
ycur=(*it).second.second;
t-=gcur+absub(x,xcur)+absub(y,ycur);
if(t<0)
{
break;
}
sum+=gcur;
x=xcur;
y=ycur;
}
cout<<sum;
return0;
}
Ⅲ c語言求解
3個問題
1、沒有寫注釋的習慣,導致定義和使用時腦子中邏輯出現差異
2、flag邏輯問題,看你代碼flag表示匹配標志,那麼無需初始化為1,這樣默認情況一直循環,只有匹配到了設置為1退出循環,但是從你匹配到之後卻是清除標志使得繼續循環,結果一個都找不到,即跳過a。
3、遞增要寫在if外面,無論是否匹配到都要遞增,放if裡面就會出現匹配不到不遞增導致重復匹配同一個元素,死循環。
這段代碼的邏輯就是,如果沒有匹配到則死盯著當前元素匹配,如果匹配到了則跳過匹配下一個元素。
Ⅳ C語言求解,如下圖
13題選B:變數s類型為char**,所以*s的類型為char*,正好用來保存字元串首地址;
17題填8:
ab是2個字元