纯c语言题解
P1001 A+B Problem
点击查看代码
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d %d", &a, &b);
c = a + b;
printf("%d", c);
return 0;
}
点击查看代码
#include<stdio.h>
int main(){
int a[100000];
int i;
for(i=0;i<10;i++) {
scanf("%d", &a[i]);
}
int n;
scanf("%d", &n);
n+=30;
int ans=0;
for(i=0;i<10;i++){
if(a[i]<=n) ans++;
}
printf("%d", ans);
return 0;
}
点击查看代码
#include<stdio.h>
int main(){
long a,b,c,d;
scanf("%ld %ld %ld", &b, &c, &d);
b=b*0.2;
c=c*0.3;
d=d*0.5;
a=b+c+d;
printf("%ld", a);
return 0;
}
点击查看代码
#include <stdio.h>
void solve() {
int n;
scanf("%d", &n);
if ( (n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
printf("1");
} else {
printf("0");
}
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}
//主要代码在void solve里面,就看这个就可以了
点击查看代码
#include<stdio.h>
int c,s=0,h=0;
int main(){
int i;
for(i=1;i<=12;i++){
scanf("%d",&c);
s-=c-300;
if(s<0){
printf("-%d",i);
return 0;
}
else {
h+=s/100;
s%=100;
}
}
printf("%d",120*h+s);
return 0;
}
点击查看代码
#include <stdio.h>
void solve() {
int n;
scanf("%d", &n);
int minn = 2147483647; // int类型的最大值
int i;
for(i = 1; i <= n; i++){
int x;
scanf("%d", &x);
if(x < minn){
minn = x;
}
}
printf("%d", minn);
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}
点击查看代码
#include <stdio.h>
void solve() {
int n;
scanf("%d", &n);
int a[2000];
int i, j;
for(i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 冒泡排序
for(i = 0; i < n - 1; i++) {
for(j = 0; j < n - 1 - i; j++) {
if(a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
double ans = 0;
for(i = 1; i < n - 1; i++) {
ans += a[i];
}
printf("%.2f", ans / (n - 2));
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}
点击查看代码
#include <stdio.h>
#include <string.h>
int main() {
int ans = 0, pos = 0;
char word[101];
char s[1000002];
char w[1000002] = {0}; // 当前正在构建的单词
int w_idx = 0; // w 的索引
int i;
int ls;
// 读入目标单词
scanf("%s", word);
getchar(); // 吸收掉 scanf 留下的换行符
// 读入一整行句子
fgets(s, sizeof(s), stdin);
// fgets 会读入末尾的换行符,需要移除
if (s[strlen(s) - 1] == '\n') {
s[strlen(s) - 1] = '\0';
}
// 在句子末尾添加空格,以确保最后一个单词能被处理
strcat(s, " ");
// 将目标单词转为小写
for (i = 0; i < strlen(word); i++) {
if (word[i] >= 'A' && word[i] <= 'Z') {
word[i] = word[i] + ('a' - 'A');
}
}
// 将句子转为小写
ls = strlen(s);
for (i = 0; i < ls; i++) {
if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] + ('a' - 'A');
}
}
// 遍历整个句子,提取并比较单词
for (i = 0; i < ls; i++) {
if (s[i] == ' ') {
// 遇到空格,意味着一个单词结束
w[w_idx] = '\0'; // C语言字符串以'\0'结尾
// 检查 w 是否与 word 相同 (且w不能为空)
if (w_idx > 0 && strcmp(w, word) == 0) {
if (ans == 0) {
pos = i - strlen(word);
}
ans++;
}
// 重置 w,准备下一个单词
w_idx = 0;
} else {
// 不是空格,则加入到当前单词 w 中
w[w_idx] = s[i];
w_idx++;
}
}
// 输出最终结果
if (ans == 0) {
printf("-1\n");
} else {
printf("%d %d\n", ans, pos);
}
return 0;
}
点击查看代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void solve() {
char str;
scanf("%s", str);
int i;
for(i = 0; str[i] != '\0'; i++){
if(islower(str[i])) {
putchar(toupper(str[i]));
} else {
putchar(str[i]);
}
}
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}
点击查看代码
#include <stdio.h>
void solve() {
int n,m;
scanf("%d %d", &n, &m);
int a;
int i;
for(i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for(i = 1; i <= m; i++){
int x;
scanf("%d", &x);
printf("%d\n", a[x]);
}
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}
点击查看代码
//这题这种方法不推荐,数据大一点就容易爆内存,所以还是建议学c++的stl中的map解法就是我标准题解中的解法
#include<cstdio>
#include<map>
using namespace std;
int n,q,p,k;
map<long long,int>b;
long long i,j;
int main()
{
scanf("%d%d",&n,&q);
while(q--)
{
scanf("%d%d%d",&p,&i,&j);
if(p==1)
{
scanf("%d",&k);
b[i*1000000+j]=k;
}
else printf("%d\n",b[i*1000000+j]);
}
return 0;
}
点击查看代码
#include <stdio.h>
int dx = {-1, -1, -1, 0, 0, 1, 1, 1};
int dy = {-1, 0, 1, -1, 1, -1, 0, 1};
//八方搜索
char a;
char ans;
int inmap(int x, int y, int n, int m){
return x >= 0 && x < n && y >= 0 && y < m;
};
//标准坐标在地图里面
void solve() {
int n,m;
scanf("%d %d", &n, &m);
int i, j, k;
for(i = 0; i < n; i++) {
scanf("%s", a[i]);
}
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
if(a[i][j] == '*'){
ans[i][j] = '*';
} else {
int cnt = 0;
for(k = 0; k < 8; k++){
int xx = dx[k] + i;
int yy = dy[k] + j;
if(inmap(xx, yy, n, m) && a[xx][yy] == '*'){
cnt++;
}
}
ans[i][j] = '0' + cnt;
}
}
}
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
putchar(ans[i][j]);
}
putchar('\n');
}
}
int main() {
int t=1;
//scanf("%d", &t);
while (t--) {
solve();
}
return 0;
}

浙公网安备 33010602011771号