关于c语言问题,求解答,大家看一下,这两题的解题思路是什么,我不会算
第一题:2与6 因无空格等符号所以打印在了一起即26
考的静态变量,记住static 那一句对x的初始化只运行一次即可(无论incre()函数运行多少次)。
另外考运算符优先级,+高于 * = ,所以子函数内相当于 x = x * (x+1) ,所以第一次是 x=1*2=2;第二次是x=2 * 3=6
~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二题8与4即:
8
4
考了运算符优先级,++ 高于 +=
还考了全局变量、局部变量的作用范围。这个子函数内是使用的局部变量d,main内用的全局变量d
最后考后自增,将d+=p++ 改写成下面三句即可:
tmp=p;
d += tmp;
p=p+1;
同理main中的d+=a++ 这句也类似替换。
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int numAlp=0,numNum=0,numOth=0;
void getNum(string str){
//统计字母,数字,其它字符的数量
int len=str.length();
for(int i=0;i<len;i++){
if(str[i]>'a'&&str[i]<'z'||str[i]>'A'&&str[i]<'Z')
numAlp++;
else if(str[i]>'0'&&str[i]<'9')
numNum++;
else
numOth++;
}
}
//打印柱状图
void print(int height,int numAlp,int numNum,int numOth){
for(int i=height+1;i>=1;i--){
//第一个柱体第i行
if(i>numAlp+1)
printf(" ");
else if(i==(numAlp+1))
printf(" %d ",numAlp);
else
printf("*****");
printf(" ");
//第二个柱体第i行
if(i>numNum+1)
printf(" ");
else if(i==(numNum+1))
printf(" %d ",numNum);
else
printf("*****");
printf(" ");
//第三个柱体第i行
if(i>numOth+1)
printf(" ");
else if(i==(numOth+1))
printf(" %d ",numOth);
else
printf("*****");
printf("\n"); //下一行
}
printf(" Alp Num Oth"); //最后一行
}
int main(){
string str;
getline(cin,str); ////统计字母,数字,其它字符的数量
getNum(str);
//获得图表高度
int height=max(numAlp,numNum);
height=max(height,numOth);
//打印柱状图表
print(++height,numAlp,numNum,numOth);
return 0;
}
#include <stdbool.h>
#include <stdlib.h>
#define MAX_SIZE 10000 // 哈希表的最大容量
struct ListNode {
int key;
struct ListNode *next;
};
struct HashTable {
struct ListNode *arr[MAX_SIZE];
};
// 初始化哈希表
void initHashTable(struct HashTable *ht) {
for (int i = 0; i < MAX_SIZE; i++) {
ht->arr[i] = NULL;
}
}
// 在哈希表中查找某个元素
bool find(struct HashTable *ht, int key) {
int index = abs(key) % MAX_SIZE;
struct ListNode *p = ht->arr[index];
while (p) {
if (p->key == key) {
return true;
}
p = p->next;
}
return false;
}
// 在哈希表中添加某个元素
void add(struct HashTable *ht, int key) {
int index = abs(key) % MAX_SIZE;
struct ListNode *node = malloc(sizeof(struct ListNode));
node->key = key;
node->next = ht->arr[index];
ht->arr[index] = node;
}
bool containsDuplicate(int* nums, int numsSize){
struct HashTable ht;
initHashTable(&ht);
for (int i = 0; i < numsSize; i++) {
if (find(&ht, nums[i])) {
return true;
}
add(&ht, nums[i]);
}
return false;
}
#include <string.h>
void replaceSpace(char* s, int length){
int spaceCount = 0;
for (int i = 0; i < length; i++) {
if (s[i] == ' ') {
spaceCount++;
}
}
int newLen = length + 2 * spaceCount;
for (int i = length - 1, j = newLen - 1; i >= 0; i--, j--) {
if (s[i] == ' ') {
s[j--] = '0';
s[j--] = '2';
s[j] = '%';
} else {
s[j] = s[i];
}
}
}