Ⅰ 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个字符